Проблема преобразования типа данных

У меня есть плата 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?

, 👍0

Обсуждение

Подсказка: WiFi.macAddress().c_str() https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/c_str/, @Mikael Patel


1 ответ


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

ссылка

,