Почему я получаю сообщение об ошибке «invalid conversion» при компиляции?

У меня есть один из NodeMCU ESP8266. OLED Arduino Wifi Mo dules, которые я пытаюсь загрузить с помощью программного обеспечения SpaceHuhn deauther из Github

Я пытаюсь скомпилировать исходный код с помощью Arduino IDE с включенным дисплеем и следую инструкциям из репозитория github здесь.

Сначала я загрузил последнюю версию программного обеспечения, но, поскольку не знал, какой параметр отображения включить перед компиляцией, я выбрал более раннюю версию, v1.6, в котором есть видео о том, как вы должны установить его на YouTube.

После раскомментирования строки 18 из:

//#define USE_DISPLAY /* <-- раскомментируйте, если хотите использовать дисплей */

чтобы было написано:

#define USE_DISPLAY /* <-- раскомментируйте, если хотите использовать дисплей */

а затем, пытаясь скомпилировать, я получаю эту ошибку:

D:\Documents\Innovateking-EU Nodemcu ESP8266\Deauther\esp8266_deauther-v.1.6\esp8266_deauther\esp8266_deauther.ino: In function 'void setup()':

esp8266_deauther:592:32: error: invalid conversion from 'const char*' to 'const uint8_t* {aka const unsigned char*}' [-fpermissive]

   display.setFont(Roboto_Mono_8);

In file included from D:\Documents\Arduino\libraries\esp8266-oled-ssd1306-master\src/SSD1306Wire.h:34:0,

                 from D:\Documents\Arduino\libraries\esp8266-oled-ssd1306-master\src/SSD1306.h:33,

                 from D:\Documents\Innovateking-EU Nodemcu ESP8266\Deauther\esp8266_deauther-v.1.6\esp8266_deauther\esp8266_deauther.ino:28:

    D:\Documents\Arduino\libraries\esp8266-oled-ssd1306-master\src/OLEDDisplay.h:243:10: error:   initializing argument 1 of 'void OLEDDisplay::setFont(const uint8_t*)' [-fpermissive]

     void setFont(const uint8_t *fontData);

Multiple libraries were found for "SSD1306.h"
 Used: D:\Documents\Arduino\libraries\esp8266-oled-ssd1306-master
 Not used: C:\Users\cos\AppData\Local\Arduino15\packages\deauther\hardware\esp8266\2.0.0-deauther\libraries\esp8266-oled-ssd1306-4.0.0
exit status 1
invalid conversion from 'const char*' to 'const uint8_t* {aka const unsigned char*}' [-fpermissive]

Видео на YouTube показывает, как работает процесс, при условии, что ничего не было отредактировано... Насколько я вижу, я сделал все то же самое.

Есть ли у кого-нибудь опыт загрузки этого на эти платы? Или знаете, в чем проблема?

, 👍1

Обсуждение

Похоже, что данные шрифта, используемые в этом коде (я еще не нашел, где это), не являются правильным типом данных. Вероятно конфликт между старым кодом и новыми библиотеками. Вы хотите, чтобы новейший код работал с новейшими библиотеками., @Majenko

Ядро esp8266 в 2.5.1 изменило char на unsigned по умолчанию, поэтому похоже, что вы используете более старую версию ядра., @Juraj

Итак, каков наилучший курс, чтобы исправить это? Используйте более раннюю версию esp8266-oled-ssd1306-master. Я не могу использовать более позднюю версию deauther, так как там нет опции для oled-дисплея... Я могу скомпилировать ее, но дисплей не работает!!, @cosmarchy


1 ответ


1

перейдите на вкладку data.h

найти: const char Roboto_Mono_8[] PROGMEM = {

и замените на: const uint8_t Roboto_Mono_8[] PROGMEM = {

Вуаля

,