Почему я получаю сообщение об ошибке «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 показывает, как работает процесс, при условии, что ничего не было отредактировано... Насколько я вижу, я сделал все то же самое.
Есть ли у кого-нибудь опыт загрузки этого на эти платы? Или знаете, в чем проблема?
@cosmarchy, 👍1
Обсуждение1 ответ
перейдите на вкладку data.h
найти: const char Roboto_Mono_8[] PROGMEM = {
и замените на: const uint8_t Roboto_Mono_8[] PROGMEM = {
Вуаля
- Как заставить 5-вольтовое реле работать с NodeMCU
- ESP8266 не подключается к Wi-Fi
- Разница между этими двумя платами NodeMCU?
- NodeMCU - использовать кнопку flash в качестве входного сигнала в loop()
- Как определить размер Flash?
- Как изменить имя модуля ESP8266-12E по умолчанию
- Простой запрос GET с ESP8266HTTPClient
- В ESP-12E NodeMCU, какой выход PIN A0?
Похоже, что данные шрифта, используемые в этом коде (я еще не нашел, где это), не являются правильным типом данных. Вероятно конфликт между старым кодом и новыми библиотеками. Вы хотите, чтобы новейший код работал с новейшими библиотеками., @Majenko
Ядро esp8266 в 2.5.1 изменило
char
на unsigned по умолчанию, поэтому похоже, что вы используете более старую версию ядра., @JurajИтак, каков наилучший курс, чтобы исправить это? Используйте более раннюю версию esp8266-oled-ssd1306-master. Я не могу использовать более позднюю версию deauther, так как там нет опции для oled-дисплея... Я могу скомпилировать ее, но дисплей не работает!!, @cosmarchy