После перехода с версии 2.х.х на 3.х.х почемуто незаводится драйвер pcd8544_84x48. Собралось разумеется без ошибок. Вот собственно первый вопрос. я чтото упустил? Спойлер: 2 Код (C++): NodeMCU 3.0.0.0 branch: release commit: f25dc56d3c6213b8ac7ce46d1293466137746eae release: 3.0.0-release_20211229 +1 release DTS: 202112300746 SSL: false build type: float LFS: 0x20000 bytes total capacity modules: adc,bit,cron,encoder,file,gpio,gpio_pulse,http,i2c,mqtt,net,node,ow,pwm2,rtcfifo,rtcmem,rtctime,sntp,spi,tmr,uart,u8g2,wifi build 2023-06-03 12:56 powered by Lua 5.1.4 on SDK 3.0.1-dev(fce080e) > print(uart.setup(0, 115200, 8, 0, 1, 1 )) 115200 > dofile("dspinit.lua") Lua error: dspinit.lua:11: attempt to call field 'pcd8544_84x48' (a nil value) stack traceback: dspinit.lua:11: in main chunk [C]: in function 'dofile' stdin:1: in main chunk [C]: ? [C]: ? > Спойлер: 3 Код (C++): -- Variables PIN_CS = 8 -- GPIO15, pull-down 10k to GND PIN_DC = 4 -- GPIO2 PIN_RES = 0 -- GPIO16 M_BUS = 1 ---end --local function u8g2_prepare() -- Initialise module spi.setup(M_BUS, spi.MASTER, spi.CPOL_LOW, spi.CPHA_LOW, 8, 20) --gpio.mode(cs, gpio.INPUT, gpio.PULLUP) disp=u8g2.pcd8544_84x48(M_BUS, PIN_CS, PIN_DC, PIN_RES)
Если я не ошибаюсь, вы закомментировали абсолютно все драйвера экрана в файле u8h2_displays.h Поэтому в финальной прошивке их нет. О чём программа пользователя и сообщает вам в runtime.
Я бы сказал что вы ошибаетесь потому как я закомментировал только как мне казалось ненужные а именно все что выше этих строчек и только те какие относятся к драйверам дисплеев с I2C интерфейсом. Спойлер: 1 Код (C++): #define U8G2_DISPLAY_TABLE_SPI \ // U8G2_DISPLAY_TABLE_ENTRY(u8g2_Setup_ssd1306_128x64_noname_f, ssd1306_128x64_noname) \ U8G2_DISPLAY_TABLE_ENTRY(u8g2_Setup_pcd8544_84x48_f, pcd8544_84x48) \ #else // SPI displays can be defined in an external file. //#define U8G2_DISPLAY_TABLE_SPI \ // U8G2_DISPLAY_TABLE_SPI_EXTRA #endif Оставив только тот какой и собрался подключать. И увы в такой конфигурации почему-то ничего не заводилось. Вчера после долгих поисков ни к чему не приведших просто ради эксперимента решил раскомментировать верхний драйвер ssd1306_128x64_noname какой был в файле по умолчанию и какой как мне казалось там присутствовать не должен раз уж мне нужен только pcd8544_84x48. После чего каким-то чудесным образом драйвер этого дисплея завёлся и таким образом мой вопрос разрешился. В атаче файл u8h2_displays.h с посути только разкоментированным ненужным драйвером и с каким драйвер pcd8544_84x48. стал работать.
Вы раскомментировали оба драйвера. Это не чудо. Почитайте о действии обратной косой черты непосредственно перед символом конца строки. В том числе в однострочных комментариях С++.
Благодарю за разъяснения выходит тут закомментированы оба драйвера а не один? #define U8G2_DISPLAY_TABLE_SPI \ // U8G2_DISPLAY_TABLE_ENTRY(u8g2_Setup_ssd1306_128x64_noname_f, ssd1306_128x64_noname) \ U8G2_DISPLAY_TABLE_ENTRY(u8g2_Setup_pcd8544_84x48_f, pcd8544_84x48) \ а тут они оба раскомментировны? #define U8G2_DISPLAY_TABLE_SPI \ U8G2_DISPLAY_TABLE_ENTRY(u8g2_Setup_ssd1306_128x64_noname_f, ssd1306_128x64_noname) \ U8G2_DISPLAY_TABLE_ENTRY(u8g2_Setup_pcd8544_84x48_f, pcd8544_84x48) \