Проблема преобразования типа данных
У меня есть плата Wemos D1 с OLED-дисплеем, использующая библиотеку u8g2.
Я печатаю свой MAC-адрес на последовательном порту & хотел бы напечатать ту же информацию на OLED:
#include <ESP8266WiFi.h>
#include <U8g2lib.h>
byte mac[6];
setup(){
Serial.println(WiFi.macAddress());
WiFi.macAddress(mac);
u8g2.drawStr(1,10,WiFi.macAddress());
u8g2.sendBuffer();
}
Это не работает. Он печатает MAC-адрес на последовательном порту, но не на OLED.
Я получаю: неизвестное преобразование для аргумента 3 из 'String' в 'const char*
Как распечатать информацию о MAC-адресе на моем oled-дисплее с помощью библиотеки u8g2?
@Rhino, 👍0
Обсуждение1 ответ
Как сказал @Mikael Patel
Вам нужно добавить .c_str()
к u8g2.drawStr(1,10,WiFi.macAddress());
, создав строку: u8g2.drawStr(1 ,10,WiFi.macAddress().c_str());
Проблема в том, что WiFi.macAddress()
возвращает String
, а не нужный const char*
с помощью drawStr
функция. c_str
преобразует объект String
в const char*
.
Пожалуйста, просмотрите документацию библиотеки u8g2
для функции drawStr
.
ссылка
А вот документация для String
ссылка
- Как получить тип данных переменной?
- Преобразование в Unix Timestamp и обратно
- Невозможно создать массив типа const char*
- ардуино - миллисекунды ()
- Ошибка Cast from 'char*' to 'uint8_t {aka unsigned char}' loses precision [-fpermissive]
- Получение шестнадцатеричных данных с терминала
- Какой тип данных Arduino допускает десятичные дроби?
- Поскольку double и float представляют один и тот же тип данных (обычно), что предпочтительнее?
Подсказка:
WiFi.macAddress().c_str()
https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/c_str/, @Mikael Patel