Поймал на ней странный глюк: на одной из станций на дисплей стала выводиться строка:
{"status":1, "result":"Ok", "errorCode":0}. Если уйти на другую станцию - строки нет. Возвращаюсь на "глючную" - вывод этой строки возобновляется. Что бы это могло быть?...
Я понимаю, что следовало бы приложить лог из терминала, но сейчас все это в магнитоле, и питается через штатный microUSB на ESP32. Отключу - состояние сбросится.
Строка циклически дергается при выводе (начало сообщения - конец сообщения). Поэтому тут фрагменты из двух фото.
...Думаете, инфо? "Status", "result" и "errorCode"?.. Я эту станцию довольно часто слушаю, и дисплей новый привинтил уже, наверное месяц назад - никогда от нее такого не было замечено. Сейчас уже "демоны самоликвидировались" - без ресетов/перезапусков.
За совет про tcESP - спасибо!
На этой прошивке появилось странное... Не знаю как сказать... Пропадание станций. Транслирует нормально, потом выпадает в Stoped. Опять начинает транслировать - и опять в Stopped. Так несколько раз - и потом постоянный Stopped. Переключение на другую станцию - та же картина. После ресета все становится нормально в тот же секунд. Надеюсь, по телнету сниму лог этих моментов.
Файл под NX3224T028-011 https://yadi.sk/d/SkUlgclKWaqH0A, кроме изменения типа ничего не делалось. Разрешение и 2.4 и у 2.8 одинаково.
Всё встало нормально, и завелось "с пол тыка". Спасибо за помощь. На досуге попробую поковыряться в редакторе NEXSTION, надписи такие миниатюрные. Ещё раз - спасибо за помощь.
...Думаете, инфо? "Status", "result" и "errorCode"?.. Я эту станцию довольно часто слушаю, и дисплей новый привинтил уже, наверное месяц назад - никогда от нее такого не было замечено. Сейчас уже "демоны самоликвидировались" - без ресетов/перезапусков.
За совет про tcESP - спасибо!
На этой прошивке появилось странное... Не знаю как сказать... Пропадание станций. Транслирует нормально, потом выпадает в Stoped. Опять начинает транслировать - и опять в Stopped. Так несколько раз - и потом постоянный Stopped. Переключение на другую станцию - та же картина. После ресета все становится нормально в тот же секунд. Надеюсь, по телнету сниму лог этих моментов.
То Pilnikov: прязрявляю. Теперь замучают просьбами, что бы под любой дисплей работало :)
А по вашему - нужно сидеть в кустах и выглядывать в щелочку на мир и радоваться тому что знаеш то в чём другие окружающие - профаны.
И.М.Х.О. В действительности происходит всё совсем по другому, когда помагаеш другим то включаеш "соображалку" и самосовершенствуешся в ситуациях которые в узком направлении трудно смоделировать.
А по вашему - нужно сидеть в кустах и выглядывать в щелочку на мир и радоваться тому что знаеш то в чём другие окружающие - профаны.
Не, это не по моему. Я всего лишь порадовался за человека и посетовал на собственную неумность :)
И что бы совсем не сочли за флуд:
Как я писал, дисплей у меня похожий. Хоть и не ILI9341, но с предложенной SPFD5408 изображение даёт. Корявенькое (т.к. бракованый) но есть. Поэтому написанное ниже у Вас может и небыть.
Просто закинуть в папку в папку с библиотеками не помогло,библиотека не обнаруживалась. После перекидывания файлов Ucglib CPP и H, стала находится, но скетч не компилировался. По итогу перенес все файлы во всех папках в основную папку Ucglib и тогда залилось. Может если добавить через меню IDE, то все сразу заработает.
По изображению: Оно есть, но зеркальное по оси Y и раз в секунду идет мерцание( возможно это из-за моего брак. дисплея) Шрифт ну осеня махонький, на уровне 0.96 OLED, Возможно надо подобрать. Название станций и композиций подхватывается, а вот время и дата нет, идёт своё и при сбросе питания обнуляется.
По соединению: 1к между RX/TX мешает. Либо напрямую(возможно есть побочки) либо "увеличиватель"
По звуку: Странное поведение: иногда нет с запуска, иногда есть с пропаданиями раз в две сек. на 2 сек.,иногда изменение звука раз в сек(как у зацарапанных CD, иногда просто работает. Связано с местом подключения питания и наличия резистора. Но 100% логики не увидел.
По питанию: При питании с Vin чаще всего всё хорошо. При питании от USB дисплей не запускается(белый экран). Подумал на влияние обмена между компом, но и от пауэрбанка и от зарядки для телефона тоже самое. Может поможет инфа, что на подключенном по I2c OLED видно что идёт последовательный перебор станций.
Надеюсь полезная информация. Или не надо было влезать?
Подскажите профану пожалуйста!!! Приобрел вот такой девайс ESP32 TTGO T-Display. При подключении к компу через usb для прошивки экран заработал. После прошивки от aidar_i #5384(удачной) экран погас (синий светодиод светиться) точка доступа WiFi karadio создалась.может как то нужно включать экран? или не та прошивка?
По звуку: Странное поведение: иногда нет с запуска, иногда есть с пропаданиями раз в две сек. на 2 сек.,иногда изменение звука раз в сек(как у зацарапанных CD, иногда просто работает....
...
Надеюсь полезная информация
. ?
Спасибо за информацию. А вот по поводу отсутствия звука при запуске. У вас радио собрано по проэкту КаРадио32 или Esp32 Radio (от Edzelf(a))?
Подскажите профану пожалуйста!!! Приобрел вот такой девайс ESP32 TTGO T-Display. При подключении к компу через usb для прошивки экран заработал. После прошивки от aidar_i #5384(удачной) экран погас (синий светодиод светиться) точка доступа WiFi karadio создалась.может как то нужно включать экран? или не та прошивка?
Не используется: C:\Users\***\Documents\Arduino\libraries\SPI ^~~~~~~~~~ compilation terminated. exit status
1 Ucglib.h: No such file or directory
Попытался пойти по другому пути
1.Из упакованного файла addon.zip:
1.2. в папку с библиотеками C:\Users\*****\Documents\Arduino\libraries\ положил папку Ucglib
4.Компиляция скетча
5. на дисплее выдало
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `init':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.cpp:1313: undefined reference to `ucg_ext_none'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.cpp:1313: undefined reference to `ucg_ext_none'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.cpp:1313: undefined reference to `ucg_dev_default_cb'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.cpp:1313: undefined reference to `ucg_dev_default_cb'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.cpp:1313: undefined reference to `ucg_Init'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `setColor':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:116: undefined reference to `ucg_SetColor'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `write':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.cpp:1327: undefined reference to `ucg_DrawGlyph'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::drawBox(int, int, int, int)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:146: undefined reference to `ucg_DrawBox'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:146: undefined reference to `ucg_DrawBox'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:146: undefined reference to `ucg_DrawBox'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `drawString':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:144: undefined reference to `ucg_DrawString'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:144: undefined reference to `ucg_DrawString'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::getStrWidth(char const*)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:111: undefined reference to `ucg_GetStrWidth'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::drawBox(int, int, int, int)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:146: undefined reference to `ucg_DrawBox'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `drawString':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:144: undefined reference to `ucg_DrawString'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::setFontMode(unsigned char)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:105: undefined reference to `ucg_SetFontMode'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::getStrWidth(char const*)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:111: undefined reference to `ucg_GetStrWidth'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `drawString':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:144: undefined reference to `ucg_DrawString'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::setFontMode(unsigned char)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:105: undefined reference to `ucg_SetFontMode'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::setColor(unsigned char, unsigned char, unsigned char, unsigned char)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:114: undefined reference to `ucg_SetColor'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::drawBox(int, int, int, int)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:146: undefined reference to `ucg_DrawBox'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::getStrWidth(char const*)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:111: undefined reference to `ucg_GetStrWidth'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `drawString':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:144: undefined reference to `ucg_DrawString
' C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::getStrWidth(char const*)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:111: undefined reference to `ucg_GetStrWidth'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `drawString':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:144: undefined reference to `ucg_DrawString'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::clearScreen()':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:147: undefined reference to `ucg_ClearScreen'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::setColor(unsigned char, unsigned char, unsigned char, unsigned char)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:114: undefined reference to `ucg_SetColor'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:114: undefined reference to `ucg_SetColor'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::drawGradientLine(int, int, int, int)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:162: undefined reference to `ucg_DrawGradientLine'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::setColor(unsigned char, unsigned char, unsigned char, unsigned char)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:114: undefined reference to `ucg_SetColor'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::drawBox(int, int, int, int)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:146: undefined reference to `ucg_DrawBox'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::setColor(unsigned char, unsigned char, unsigned char, unsigned char)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:114: undefined reference to `ucg_SetColor'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::getStrWidth(char const*)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:111: undefined reference to `ucg_GetStrWidth'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:111: undefined reference to `ucg_GetStrWidth'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:111: undefined reference to `ucg_GetStrWidth'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:111: undefined reference to `ucg_GetStrWidth'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `global constructors keyed to 65535_0_addon.ino.cpp.o.2444': :(.text.startup+0x7c): undefined reference to `ucg_dev_ili9341_18x240x320' :(.text.startup+0x7e): undefined reference to `ucg_dev_ili9341_18x240x320' :(.text.startup+0x88): undefined reference to `ucg_ext_ili9341_18' :(.text.startup+0x8a): undefined reference to `ucg_ext_ili9341_18'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `begin':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.cpp:1177: undefined reference to `ucg_Init'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.cpp:1178: undefined reference to `ucg_SetFontMode'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::clearScreen()':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:147: undefined reference to `ucg_ClearScreen'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::setRotate90()':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:120: undefined reference to `ucg_SetRotate90'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::setFont(unsigned char const*)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:103: undefined reference to `ucg_font_5x8_tf'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:103: undefined reference to `ucg_font_5x8_tf'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:103: undefined reference to `ucg_font_6x10_tf'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:103: undefined reference to `ucg_font_6x10_tf'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:103: undefined reference to `ucg_SetFont'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::setFontPosTop()':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:99: undefined reference to `ucg_SetFontPosTop'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::setColor(unsigned char, unsigned char, unsigned char, unsigned char)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:114: undefined reference to `ucg_SetColor'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::getStrWidth(char const*)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:111: undefined reference to `ucg_GetStrWidth'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `drawString':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:144: undefined reference to `ucg_DrawString'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::setScale2x2()':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:125: undefined reference to `ucg_SetScale2x2'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::clearScreen()':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:147: undefined reference to `ucg_ClearScreen'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::undoScale()':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:124: undefined reference to `ucg_UndoScale'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::getStrWidth(char const*)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:111: undefined reference to `ucg_GetStrWidth'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::undoScale()':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:124: undefined reference to `ucg_UndoScale'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::getStrWidth(char const*)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:111: undefined reference to `ucg_GetStrWidth'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:111: undefined reference to `ucg_GetStrWidth'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:111: undefined reference to `ucg_GetStrWidth' collect2.exe: error: ld returned 1 exit
1.У меня - красного цвета плата. Завелось с пол тыка.
2. По ОТА обновлялись? У меня после обновления - после подачи питания радио играет 2 мин потом тишина приблизительно 50 сек. потом опять завелось и в последующем играет без глюков.
Это из за изменений которые пришли при обновлении по ОТА
может есть готовая прошивка именно для TTGO T-Display? Еще заметил что когда подключается к моей вай фай сети через секунд 10 отваливается обратно к wifiKaradio.
Скачайте с гитхаба оригинальную https://github.com/olikraus/Ucglib_Arduino/releases/tag/1.5.2 Удалите старую. Вместо нее положите оригинальную. Первую версию аддона тоже удалите. Попробуйте найти и скомпилить (без загрузки) один из встроенных примеров для этой либы. Если получилось - замените файлы ucglib.h и ucglib.cpp в подпапке src на мои из последнего архива. Пробуйте собирать аддон.
может есть готовая прошивка именно для TTGO T-Display? Еще заметил что когда подключается к моей вай фай сети через секунд 10 отваливается обратно к wifiKaradio.
Прошивка для всех плат одинаковая. Отличия именно в конфиг файле. Читайте ветку
Скачайте с гитхаба оригинальную https://github.com/olikraus/Ucglib_Arduino/releases/tag/1.5.2 Удалите старую. Вместо нее положите оригинальную. Первую версию аддона тоже удалите. Попробуйте найти и скомпилить (без загрузки) один из встроенных примеров для этой либы. Если получилось - замените файлы ucglib.h и ucglib.cpp в подпапке src на мои из последнего архива. Пробуйте собирать аддон.
..C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino: In function 'void ucglib_graphics_test()':
GraphicsTest:118:3: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino: In function 'void gradient()':
GraphicsTest:137:3: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino: In function 'void box()':
GraphicsTest:169:3: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino: In function 'void pixel_and_lines()':
GraphicsTest:201:8: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino: In function 'void color_test()':
GraphicsTest:239:8: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino: In function 'void cross()':
GraphicsTest:276:3: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino: In function 'void triangle()':
GraphicsTest:325:3: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino: In function 'void text()':
GraphicsTest:359:3: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino: In function 'void fonts()':
GraphicsTest:392:3: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino:392:3: note: suggested alternative: 'ucg_t'
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino: In function 'void clip()':
GraphicsTest:450:3: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino: In function 'void setup()':
GraphicsTest:532:3: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino: In function 'void set_clip_range()':
GraphicsTest:544:19: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino: In function 'void loop()':
GraphicsTest:556:13: error: 'ucg' was not declared in this scope
C:\Users\**\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino:556:13: note: suggested alternative: 'ucg_t'
GraphicsTest:564:5: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino:564:5: note: suggested alternative: 'ucg_t'
GraphicsTest:582:3: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino:582:3: note: suggested alternative: 'ucg_t'
Несколько библиотек найдено для "SPI.h"
Используется: C:\Users\***\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3\libraries\SPI
Не используется: C:\Users\***\Documents\Arduino\libraries\SPI
exit status 1
'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\HelloWorld\HelloWorld.ino: In function 'void setup()':
HelloWorld:105:3: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\HelloWorld\HelloWorld.ino: In function 'void loop()':
HelloWorld:113:3: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\HelloWorld\HelloWorld.ino:113:3: note: suggested alternative: 'ucg_t'
Несколько библиотек найдено для "SPI.h"
Используется: C:\Users\***\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3\libraries\SPI
Не используется: C:\Users\***\Documents\Arduino\libraries\SPI
exit status 1
'ucg' was not declared in this scope
Свежие новости (тут должно быть рисунок слоупока :). Arduino IDE 1.8.13 спокойно скомпилировало скетч из папки с русскими символами. Для надежности запихнул саму оболочку туда же - в результате нормальная компиляция. Когда поправили я х.з. Меньше вопросов от начинающих.
To: Spazmalgon. Скачайте зип архив последней ревизии IDE(не установочную версию) с оригинального сайта и закиньте её в корень диска С. Туда же кидайте папки со скетчами. И хорошо бы убедиться, что дисплей у Вас действительно на ILI9341.
Попробуйте через терминал затолкать sys.lcd("199") и перезапустите. Но ветку то почитайте. Информация полученная легко, в голове не остаётся и пользы не приносит.
UPD: НО может дело и в прошивке или неправильном конфиге.
По определению ID дисплея я находил в библиотеках от mcufriend и это было сложно.
Если белый, то может в сериал порте чё пишет?
Моё "чудо" завелось на вот этом скетче graphicstest из библиотеки SPFD5408_TFT_Library
// IMPORTANT: TftSpfd5408 LIBRARY MUST BE SPECIFICALLY
// CONFIGURED FOR EITHER THE TFT SHIELD OR THE BREAKOUT BOARD.
// SEE RELEVANT COMMENTS IN TftSpfd5408.h FOR SETUP.
// The control pins for the LCD can be assigned to any digital or
// analog pins...but we'll use the analog pins as this allows us to
// double up the pins with the touch screen (see the TFT paint example).
#define LCD_CS A3 // Chip Select goes to Analog 3
#define LCD_CD A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
#define LCD_RD A0 // LCD Read goes to Analog 0
#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin
// When using the BREAKOUT BOARD only, use these 8 data lines to the LCD:
// For the Arduino Uno, Duemilanove, Diecimila, etc.:
// D0 connects to digital pin 8 (Notice these are
// D1 connects to digital pin 9 NOT in order!)
// D2 connects to digital pin 2
// D3 connects to digital pin 3
// D4 connects to digital pin 4
// D5 connects to digital pin 5
// D6 connects to digital pin 6
// D7 connects to digital pin 7
// For the Arduino Mega, use digital pins 22 through 29
// (on the 2-row header at the end of the board).
// Assign human-readable names to some common 16-bit color values:
#define RED 0x001F
#define YELLOW 0x07FF
#define GREEN 0x07E0
#define BLUE 0xF800
#define CYAN 0xFFE0
#define MAGENTA 0xF81F
#define BLACK 0x0000
#define WHITE 0xFFFF
TftSpfd5408 tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
// If using the shield, all control and data lines are fixed, and
// a simpler declaration can optionally be used:
// TftSpfd5408 tft;
unsigned long testFastLines(uint16_t color1, uint16_t color2) {
unsigned long start;
int x, y, w = tft.width(), h = tft.height();
tft.fillScreen(BLACK);
start = micros();
for(y=0; y
for(x=0; x
return micros() - start;
}
unsigned long testRects(uint16_t color) {
unsigned long start;
int n, i, i2,
cx = tft.width() / 2,
cy = tft.height() / 2;
tft.fillScreen(BLACK);
n = min(tft.width(), tft.height());
start = micros();
for(i=2; i
i2 = i / 2;
tft.drawRect(cx-i2, cy-i2, i, i, color);
}
return micros() - start;
}
unsigned long testFilledRects(uint16_t color1, uint16_t color2) {
unsigned long start, t = 0;
int n, i, i2,
cx = tft.width() / 2 - 1,
cy = tft.height() / 2 - 1;
tft.fillScreen(BLACK);
n = min(tft.width(), tft.height());
for(i=n; i>0; i-=6) {
i2 = i / 2;
start = micros();
tft.fillRect(cx-i2, cy-i2, i, i, color1);
t += micros() - start;
// Outlines are not included in timing results
tft.drawRect(cx-i2, cy-i2, i, i, color2);
}
return t;
}
unsigned long testFilledCircles(uint8_t radius, uint16_t color) {
unsigned long start;
int x, y, w = tft.width(), h = tft.height(), r2 = radius * 2;
tft.fillScreen(BLACK);
start = micros();
for(x=radius; x
for(y=radius; y
tft.fillCircle(x, y, radius, color);
}
}
return micros() - start;
}
unsigned long testCircles(uint8_t radius, uint16_t color) {
unsigned long start;
int x, y, r2 = radius * 2,
w = tft.width() + radius,
h = tft.height() + radius;
// Screen is not cleared for this one -- this is
// intentional and does not affect the reported time.
start = micros();
for(x=0; x
for(y=0; y
tft.drawCircle(x, y, radius, color);
}
}
return micros() - start;
}
unsigned long testTriangles() {
unsigned long start;
int n, i, cx = tft.width() / 2 - 1,
cy = tft.height() / 2 - 1;
tft.fillScreen(BLACK);
n = min(cx, cy);
start = micros();
for(i=0; i
tft.drawTriangle(
cx , cy - i, // peak
cx - i, cy + i, // bottom left
cx + i, cy + i, // bottom right
tft.color565(0, 0, i));
}
return micros() - start;
}
unsigned long testFilledTriangles() {
unsigned long start, t = 0;
int i, cx = tft.width() / 2 - 1,
cy = tft.height() / 2 - 1;
tft.fillScreen(BLACK);
start = micros();
for(i=min(cx,cy); i>10; i-=5) {
start = micros();
tft.fillTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i,
tft.color565(0, i, i));
t += micros() - start;
tft.drawTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i,
tft.color565(i, i, 0));
}
return t;
}
unsigned long testRoundRects() {
unsigned long start;
int w, i, i2,
cx = tft.width() / 2 - 1,
cy = tft.height() / 2 - 1;
tft.fillScreen(BLACK);
w = min(tft.width(), tft.height());
start = micros();
for(i=0; i
i2 = i / 2;
tft.drawRoundRect(cx-i2, cy-i2, i, i, i/8, tft.color565(i, 0, 0));
}
return micros() - start;
}
unsigned long testFilledRoundRects() {
unsigned long start;
int i, i2,
cx = tft.width() / 2 - 1,
cy = tft.height() / 2 - 1;
tft.fillScreen(BLACK);
start = micros();
for(i=min(tft.width(), tft.height()); i>20; i-=6) {
i2 = i / 2;
tft.fillRoundRect(cx-i2, cy-i2, i, i, i/8, tft.color565(0, i, 0));
}
Последний скеч сделан конкретно под шилд spazmalgona. Там шину данных надо точно также подключать как в шилде. D0 - 8 D1- 9 D2 -2 ÷ D7-7 . Dx - это пины шилда, цифири - номера цифровых пинов уны
Наверное я отключусь, что бы не вносить сумятицу. Но на последок уточню:
!. Первая версия Вашего "аддона" у меня давала белый экран.
2. Вторая заработала с результатом указанным в #8562 . У Спазмалгона не скомпилировалось, результат не ясен.
В сообщении #8573 Вы написали как устанавливать библиотеки. Сделал. Скачал заново "аддон" (вдруг что поменяли) По этому варианту получаем белый экран. При компиляции "аддона" из пункта 2 - белый экран.
Вот блин все равно нихрена не понятно. Я понимаю что уровень участников - "тестер". Но как то предыдущие либы были скачаны (даже с гитхаба) и запущены. А с этой че не так? Почему у меня все собирается "из коробки"? У меня сама иде стоит "по умолчанию" в c:\Program Files (x86)\Arduino\, скечи и либы лежат на диске z: в папке z:\sketch\. Скечи в корне а либы в подпапке libraries. И все блин работает. Иде настроено так
Если совсем все плохо, то все файлы либы (из папок src и clib) можно сложить в папку скеча (addon) линейно. Но при этом внутри файлов придется править #include. Например #include "clib/ucg.h" надо поправить на #include "ucg.h" и в самом скече #include <ucglib.h> на #include "ucglib.h" Скобки на кавычки. Кавычки говорят, что файл лежит тут-же, а скобки - что его где-то надо поискать.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list
of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
18 Feb 2014:
ROM Size Font Mode
9928 NONE
10942 TRANSPARENT (1014 Bytes)
11650 SOLID (1712 Bytes)
12214 TRANSPARENT+SOLID
*/
#include
#include "Ucglib.h"
/*
Hardware SPI Pins:
Arduino Uno sclk=13, data=11
Arduino Due sclk=76, data=75
Arduino Mega sclk=52, data=51
Стандартные примеры на вашей шилде работать не будут. Вам надо 2 файла подменить в папке src, а потом пробовать собирать аддон. Либо попробовать в пример вставить конструктор из аддона (строку Ucglib_ILI9341_8BIT_PORTD ..... которая). Остальные конструкторы нужно закомментить.
может есть готовая прошивка именно для TTGO T-Display? ...
У TTGO T-Display нестандартное разрешение экрана (чип ST7789 1,14 дюймов IPS 240x135) для стандартной прошивки KaRadio32 (см. гитхаб: https://github.com/karawin/Ka-Radio32#lcd-or-oled-declaration ), поэтому данная плата с дисплеем работать не будет. Без экрана, при правильно настроенном конфиге, звук извлечь можно.
может есть готовая прошивка именно для TTGO T-Display? ...
У TTGO T-Display нестандартное разрешение экрана (чип ST7789 1,14 дюймов IPS 240x135) для стандартной прошивки KaRadio32 (см. гитхаб: https://github.com/karawin/Ka-Radio32#lcd-or-oled-declaration ), поэтому данная плата с дисплеем работать не будет. Без экрана, при правильно настроенном конфиге, звук извлечь можно.
То есть можно к нему подключить внешний дисплей рабочий,а саму ttgo просто использовать как контролёр? Так заведется? Можно шить стандартной полной?Или уже покупать проверенный комплект из esp 32 и дисплея?
... Я взялся за разводку голого чипа в надежде пристроить "пострадавшего" после неудачной запайки модуля. Где-то ранее фотку сюда выкладывал...
Могу в конверте прислать платку вровера с убитым чипом есп32, если захотите попробовать его перепаять :) Валяется без дела. Но он со снятым экраном (утерян).
У себя юзал связку CSR8675 + PCM5102 (предыдущая версия но уже с APT-X HD) - при стриминге флак радио (типа sectorradio) с совместимого телефона с APT-X HD (Пиксель 4) качество звука потрясающее даже с этим копеечным цапом
У себя юзал связку CSR8675 + PCM5102 (предыдущая версия но уже с APT-X HD) - при стриминге флак радио (типа sectorradio) с совместимого телефона с APT-X HD (Пиксель 4) качество звука потрясающее даже с этим копеечным цапом
Для моих целей на сегодня - BT201 это отличный модуль. У него на борту не только Bluetooth но и юсб и микросд разъемы для прослушивания музыки, а также он передает инфу через УАРТ которая выводиться у меня на экране (актуально только для юсб и микросд).
ТО pilnikov
Добрый вечер. Понимаю, что достал вас, но всё же - по этому скетчу (для ардуино уно) завелось "чудо"
// Simple Test Sketch for Arduino UNO & 2.4" LCD TFT 320x240 Shield from Banggood.com
// SKU156315 Using the ILITEK ILI9341 or Samsung S6D04H0X Driver Chip(Almost identical chips!)
// 240x320 Resolution RGB and 262K Colors.
// Modified Sketch for UNO by KB1UIF(A.Tedds)
// Based on the new v2 simple UNO test sketch from Banggood.com.
// Various errors were in the Banggood release, which I have corrected.
// I have also added more functions and lots of comments.
// Use at your own risk!!
// With MADCTL set to 0x40, Original Value 48, For RGB-BGR Flip D3.
#define WHITE 0x0000
#define RED 0xFFC0
#define GREEN 0xF81F
#define BLUE 0x07FF
#define CYAN 0x003F
#define MAGENTA 0x07C0
#define YELLOW 0xF800
#define BLACK 0xFFFF
#define LCD_RD A0 //Define A0 as LCD_RD (Read)
#define LCD_WR A1 //Define A1 as LCD_WR (Write)
#define LCD_RS A2 //Define A2 as LCD_RS (0=Command/1=Data)
#define LCD_CS A3 //Define A3 as LCD_CS (Chip Select)
#define LCD_RST A4 //Define A4 as LCD_RST (Shield Reset, NOT to the Reset Button)
//-------------------------------------------------------------------------------------------
void Lcd_Writ_Bus(unsigned char d)
{
//Clear port D relevent bits then AND input (d) with Mask (bits 0-1) for port D out (6 data bits 2-7).
PORTD = (PORTD & B00000011) | ((d) & B11111100);
//Clear port B relevent bits then AND input (d) with Mask (bits 2-7) for port B out (2 data bits 0-1).
PORTB = (PORTB & B11111100) | ((d) & B00000011);
//Now strobe the LCD shield write control line LCD_WR (A1).
*(portOutputRegister(digitalPinToPort(LCD_WR))) &= ~digitalPinToBitMask(LCD_WR);//LCD_WR=0
*(portOutputRegister(digitalPinToPort(LCD_WR))) |= digitalPinToBitMask(LCD_WR); //LCD_WR=1
}
//-------------------------------------------------------------------------------------------
void Lcd_Write_Com(unsigned char VH)
{
*(portOutputRegister(digitalPinToPort(LCD_RS))) &= ~digitalPinToBitMask(LCD_RS);//LCD_RS=0 (Set Control line for Command)
Lcd_Writ_Bus(VH);//Write Hex Value of COM Register passed to Lcd_Write_Com.
}
//-------------------------------------------------------------------------------------------
void Lcd_Write_Data(unsigned char VH)
{
*(portOutputRegister(digitalPinToPort(LCD_RS))) |= digitalPinToBitMask(LCD_RS); //LCD_RS=1 (Set control line for Data)
Lcd_Writ_Bus(VH);//Write Hex Value of Data passed to Lcd_Write_Data.
}
//-------------------------------------------------------------------------------------------
void Lcd_Write_Com_Data(unsigned char com, unsigned char dat)
{
Lcd_Write_Com(com);//Write Hex Value of COM Register passed to Lcd_Write_Com_Data.
Lcd_Write_Data(dat);//Write Hex Value of Data passed to Lcd_Write_Com_Data.
}
//-------------------------------------------------------------------------------------------
void Address_set(unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2)
{
Lcd_Write_Com(0x2a);//REG 2Ah=COLADDRSET Command 4 Values.
Lcd_Write_Data(x1 >> 8); //Send Value of x1 with right bit shift x8.
Lcd_Write_Data(x1);//Send Value of x1.
Lcd_Write_Data(x2 >> 8); //Send Value of x2 with right bit shift x8.
Lcd_Write_Data(x2);//Send Value of x2.
Lcd_Write_Com(0x2b);//REG 2Bh=PAGEADDRSET Command 4 Values.
Lcd_Write_Data(y1 >> 8); //Send Value of y1 with right bit shift x8.
Lcd_Write_Data(y1);//Send Value of y1.
Lcd_Write_Data(y2 >> 8); //Send Value of y2 with right bit shift x8.
Lcd_Write_Data(y2);//Send Value of y2.
Lcd_Write_Com(0x2c); // REG 2Ch = Memory Write
}
//-------------------------------------------------------------------------------------------
//Init commands for Shield.
void Lcd_Init(void)
{
digitalWrite(LCD_RST, HIGH); // Take line HIGH.
delay(5); //delay of 5mS.
digitalWrite(LCD_RST, LOW); //Take line LOW to Reset Shield, Active LOW.
delay(15);//delay of 15mS.
digitalWrite(LCD_RST, HIGH); //Take Line HIGH allow Shield to function.
delay(15);//delay of 15mS.
digitalWrite(LCD_CS, HIGH); //Take Chip Select HIGH, Disable Shield Chip, Active LOW.
digitalWrite(LCD_WR, HIGH); //Take Write line HIGH.
digitalWrite(LCD_CS, LOW); //Take Chip Select LOW, Enable Shield Chip, Active LOW.
Lcd_Write_Com(0xC0); //Power control 1
Lcd_Write_Data(0x23); //VRH[5:0] 0010 0011 4.60 Volts, default is 4.50 Volts.
Lcd_Write_Com(0xC1); //Power control 2, Sets the factor used in the step-up circuits
Lcd_Write_Data(0x10); //BT[2:0] 0001 0000 default is 10
Lcd_Write_Com(0xB6); //B6h Display Function Control.
Lcd_Write_Data(0x08); //08h PTG [3:2] & PT [1:0] 0000 1000
//PTG [3:2]: Set the scan mode in non-display area.
//PT [1:0]: Determine source/VCOM output in a non-display area in the partial display mode.
Lcd_Write_Data(0x82); //1000 0010 REV[D7] GS[D6] SS[D5] SM[D4] ISC[3:0]=5Frames 85mS.
Lcd_Write_Data(0x27); //0010 0111 NL[5:0]
Lcd_Write_Com(0x11); //Wake, Exit Sleep.
delay(120); //120mS Delay to allow shield to settle.
Lcd_Write_Com(0x29); //Display on.
Lcd_Write_Com(0x2c); //Memory Write.
}
//-------------------------------------------------------------------------------------------
void invertColor()
{
Lcd_Write_Com(0x21); //Invert Colors.
}
//-------------------------------------------------------------------------------------------
void normalColor()
{
Lcd_Write_Com(0x20); //Normal Colors.
}
//-------------------------------------------------------------------------------------------
void blink(int Times, int DL) //invert colors #Times, DL delay between each.
{
for (int t = 1; t <= Times; ++t)
{
Lcd_Write_Com(0x21); //Invert
delay(DL); //DL delay between inversion and normal.
Lcd_Write_Com(0x20); //Normal
delay(DL); //DL delay between normal and inversion.
}
}
//-------------------------------------------------------------------------------------------
void drawCircle(int x, int y, int radius, unsigned color)
{
int f = 1 - radius;
int ddF_x = 1;
int ddF_y = -2 * radius;
int x1 = 0;
int y1 = radius;
digitalWrite(LCD_CS, LOW);//Chip Select Active.
Address_set(x, y + radius, x, y + radius);
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
Address_set(x, y - radius, x, y - radius);
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
Address_set(x + radius, y, x + radius, y);
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
Address_set(x - radius, y, x - radius, y);
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
while (x1 < y1)
{
if (f >= 0)
{
y1--;
ddF_y += 2;
f += ddF_y;
}
x1++;
ddF_x += 2;
f += ddF_x;
Address_set(x + x1, y + y1, x + x1, y + y1);
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
Address_set(x - x1, y + y1, x - x1, y + y1);
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
Address_set(x + x1, y - y1, x + x1, y - y1);
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
Address_set(x - x1, y - y1, x - x1, y - y1);
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
Address_set(x + y1, y + x1, x + y1, y + x1);
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
Address_set(x - y1, y + x1, x - y1, y + x1);
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
Address_set(x + y1, y - x1, x + y1, y - x1);
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
Address_set(x - y1, y - x1, x - y1, y - x1);
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
}
}
//-------------------------------------------------------------------------------------------
void drawPixel(unsigned int x, unsigned int y, unsigned int color)
{
//Check for values falling in display area.
if ((x < 0) || (y < 0) || (x >= TFTWIDTH) || (y >= TFTHEIGHT)) return;
digitalWrite(LCD_CS, LOW);// Chip Select active
Address_set(x, y, TFTWIDTH - 1, TFTHEIGHT - 1);
digitalWrite(LCD_CS, LOW);// Chip Select active
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
}
//-------------------------------------------------------------------------------------------
void drawLine(unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2, unsigned int color)
{
unsigned int dx = (x2 > x1 ? x2 - x1 : x1 - x2);
short xstep = x2 > x1 ? 1 : -1;
unsigned int dy = (y2 > y1 ? y2 - y1 : y1 - y2);
short ystep = y2 > y1 ? 1 : -1;
int col = x1, row = y1;
digitalWrite(LCD_CS, LOW);
if (dx < dy)
{
int t = - (dy >> 1);
while (true)
{
Address_set (col, row, col, row);
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
if (row == y2)
return;
row += ystep;
t += dx;
if (t >= 0)
{
col += xstep;
t -= dy;
}
}
}
else
{
int t = - (dx >> 1);
while (true)
{
Address_set (col, row, col, row);
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
if (col == x2)
return;
col += xstep;
t += dy;
if (t >= 0)
{
row += ystep;
t -= dx;
}
}
}
}
//-------------------------------------------------------------------------------------------
void drawTriangle(unsigned x0, unsigned y0, unsigned x1, unsigned y1, unsigned x2, unsigned y2, uint16_t color)
{
drawLine(x0, y0, x1, y1, color);
drawLine(x1, y1, x2, y2, color);
drawLine(x2, y2, x0, y0, color);
}
//-------------------------------------------------------------------------------------------
void H_line(unsigned int x, unsigned int y, unsigned int l, unsigned int c)
{
unsigned int i, j;
Lcd_Write_Com(0x02c); //write_memory_start
digitalWrite(LCD_RS, HIGH);
digitalWrite(LCD_CS, LOW);
l = l + x;
Address_set(x, y, l, y);
j = l * 2;
for (i = 1; i <= j; i++)
{
Lcd_Write_Data(c);
}
}
//-------------------------------------------------------------------------------------------
void V_line(unsigned int x, unsigned int y, unsigned int l, unsigned int c)
{
unsigned int i, j;
Lcd_Write_Com(0x02c); //write_memory_start
digitalWrite(LCD_RS, HIGH);
digitalWrite(LCD_CS, LOW);
l = l + y;
Address_set(x, y, x, l);
j = l * 2;
for (i = 1; i <= j; i++)
{
Lcd_Write_Data(c);
}
}
//-------------------------------------------------------------------------------------------
//Draw Rectangle.
void Rect(unsigned int x, unsigned int y, unsigned int w, unsigned int h, unsigned int c)
{
H_line(x , y , w, c);
H_line(x , y + h, w, c);
V_line(x , y , h, c);
V_line(x + w, y , h, c);
}
//-------------------------------------------------------------------------------------------
//Draw Filled Rectangle.
void Rectf(unsigned int x, unsigned int y, unsigned int w, unsigned int h, unsigned int c)
{
unsigned int i;
for (i = 0; i < h; i++)
{
H_line(x , y , w, c);
H_line(x , y + i, w, c);
}
}
//-------------------------------------------------------------------------------------------
int RGB(int r, int g, int b)
{
return r << 16 | g << 8 | b;
}
//-------------------------------------------------------------------------------------------
//Fill Screen with color j
void LCD_Clear(unsigned int j)
{
unsigned int i, m;
Address_set(0, 0, 239, 319);
digitalWrite(LCD_CS, LOW); //Chip Select Active.
for (i = 0; i < 240; i++)
for (m = 0; m < 320; m++)
{
Lcd_Write_Data(j >> 8);
Lcd_Write_Data(j);
}
}
//-------------------------------------------------------------------------------------------
void setup()
{
for (int p = 2; p < 10; p++)
{
pinMode(p, OUTPUT); //Set Pins 2-9 as Output.
}
pinMode(A0, OUTPUT); //Set A0 as Output for LCD_RD (Read)
pinMode(A1, OUTPUT); //Set A1 as Output for LCD_WR (Write)
pinMode(A2, OUTPUT); //Set A2 as Output for LCD_RS (0=Command/1=Data)
pinMode(A3, OUTPUT); //Set A3 as Output for LCD_CS (Chip Select, Active LOW)
pinMode(A4, OUTPUT); //Set A4 as Output for LCD_RST (Soft Reset, Active LOW)
digitalWrite(A0, HIGH);//Set idle State for LCD_RD.
digitalWrite(A1, HIGH);//Set Idle State for LCD_WR.
digitalWrite(A2, HIGH);//Set input as Data for LCD_RS (0=Command/1=Data)
digitalWrite(A3, HIGH);//Set Idle State for LCD_CS Active LOW.
digitalWrite(A4, HIGH);//Set Idle State for LCD_RST Soft Reset active LOW.
Lcd_Init();// Run Init LCD Shield Routine.
LCD_Clear(BLACK);//Clear Screen to Black.
}
//-------------------------------------------------------------------------------------------
void loop()
{
//LCD_Clear(BLACK);
LCD_Clear(WHITE);//Clear Screen to White
delay(1000);
invertColor();
delay(1000);
normalColor();
LCD_Clear(WHITE);//Clear Screen to White
blink(1, 200); //Blink 1 times with 200mS Delay between.
LCD_Clear(RED);//Clear Screen to Red
blink(1, 200);
LCD_Clear(GREEN);//Clear Screen to Green
blink(1, 200);
LCD_Clear(BLUE);//Clear Screen to Blue
blink(1, 200);
LCD_Clear(YELLOW);//Clear Screen to Yellow
blink(1, 200);
LCD_Clear(MAGENTA);//Clear Screen to Magenta
blink(1, 200);
LCD_Clear(CYAN);//Clear Screen to Cyan
blink(1, 200);
LCD_Clear(BLACK);//Clear Screen to Black
blink(1, 200);
LCD_Clear(BLACK);//Clear Screen to Black
//Draw 50 random size, random position, random color triangles.
for (int i = 0; i < 50; i++)
{
drawTriangle(random(239), random(319), random(239), random(319), random(239), random(319), random(65535)); //drawTriangle(x0,y0,x1,y1,x2,y2,Color);
}
delay(2000);
blink(3, 500);
//Draw 200 random size, random position, random color Lines.
LCD_Clear(BLACK);//Clear Screen to Black
for (int i = 0; i < 200; i++)
{
drawLine(random(240), random(320), random(240), random(320), random(65535)); // Lines at x, y, x1, y1, color.
}
delay(2000);//Delay of 2 Sec.
blink(3, 500); //Blink 5 times with 100mS Delay between.
LCD_Clear(BLACK);//Clear Screen to Black
//Draw 10000 random position and random color dots.
for (int i = 0; i < 10000; i++)
{
drawPixel(random(239), random(319), random(65535)); // Pixels at x, y, color.
}
delay(2000);//Delay of 2 Sec.
blink(3, 500); //Blink 5 times with 100mS Delay between.
LCD_Clear(BLACK);//Clear Screen to Black
//Draw 100 random size, random position and random color rectangles.
for (int i = 0; i < 100; i++)
{
Rect(random(120), random(160), random(120), random(160), random(65535)); // rectangle at x, y, width, hight, color.
}
delay(2000);//Delay of 2 Sec.
blink(3, 500); //Blink 5 times with 100mS Delay between.
LCD_Clear(BLACK);//Clear Screen to Black
//Draw 100 random size, random color circles about the x, y, position, Center of screen in this example.
for (int i = 0; i < 100; i++)
{
drawCircle(120, 160, random(120), random(65535)); // circles at x, y, radius, color.
}
delay(2000);//Delay of 2 Sec.
blink(3, 500); //Blink 5 times with 100mS Delay between.
LCD_Clear(BLACK);//Clear Screen to Black
//Draw 30 random size, random position and random color filled rectangles.
for (int i = 0; i < 30; i++)
{
Rectf(random(120), random(160), random(120), random(160), random(65535)); // Filled Rectangle at x, y, width, hight, color.
}
delay(2000);//Delay of 2 Sec.
blink(3, 500); //Blink 5 times with 100mS Delay between.
LCD_Clear(BLACK);//Clear Screen to Black
//while(true);//Stop Sketch Here if required.
}
//-------------------------------------------------------------------------------------------
//End of Sketch.
пока нет
пока нет
Понял, что по своему не знанию приобрёл дисплей той конфигурации которая не поддерживается, а в результате - выкинул деньги на ветер.
Поймал на ней странный глюк: на одной из станций на дисплей стала выводиться строка:
{"status":1, "result":"Ok", "errorCode":0}. Если уйти на другую станцию - строки нет. Возвращаюсь на "глючную" - вывод этой строки возобновляется. Что бы это могло быть?...
Я понимаю, что следовало бы приложить лог из терминала, но сейчас все это в магнитоле, и питается через штатный microUSB на ESP32. Отключу - состояние сбросится.
Строка циклически дергается при выводе (начало сообщения - конец сообщения). Поэтому тут фрагменты из двух фото.
это так 101.ru инфо о станции передает. Все вопросы к 101.ru
поставьте tcESP - она вам по телнету лог покажет.
...Думаете, инфо? "Status", "result" и "errorCode"?.. Я эту станцию довольно часто слушаю, и дисплей новый привинтил уже, наверное месяц назад - никогда от нее такого не было замечено. Сейчас уже "демоны самоликвидировались" - без ресетов/перезапусков.
За совет про tcESP - спасибо!
На этой прошивке появилось странное... Не знаю как сказать... Пропадание станций. Транслирует нормально, потом выпадает в Stoped. Опять начинает транслировать - и опять в Stopped. Так несколько раз - и потом постоянный Stopped. Переключение на другую станцию - та же картина. После ресета все становится нормально в тот же секунд. Надеюсь, по телнету сниму лог этих моментов.
spazmalgon
Файл под NX3224T028-011 https://yadi.sk/d/SkUlgclKWaqH0A, кроме изменения типа ничего не делалось. Разрешение и 2.4 и у 2.8 одинаково.
Всё встало нормально, и завелось "с пол тыка". Спасибо за помощь. На досуге попробую поковыряться в редакторе NEXSTION, надписи такие миниатюрные. Ещё раз - спасибо за помощь.
...Думаете, инфо? "Status", "result" и "errorCode"?.. Я эту станцию довольно часто слушаю, и дисплей новый привинтил уже, наверное месяц назад - никогда от нее такого не было замечено. Сейчас уже "демоны самоликвидировались" - без ресетов/перезапусков.
За совет про tcESP - спасибо!
На этой прошивке появилось странное... Не знаю как сказать... Пропадание станций. Транслирует нормально, потом выпадает в Stoped. Опять начинает транслировать - и опять в Stopped. Так несколько раз - и потом постоянный Stopped. Переключение на другую станцию - та же картина. После ресета все становится нормально в тот же секунд. Надеюсь, по телнету сниму лог этих моментов.
Понял, что по своему не знанию приобрёл дисплей той конфигурации которая не поддерживается, а в результате - выкинул деньги на ветер.
Пробуйте.
https://drive.google.com/file/d/1huvdyJxwRm59NehzdOERk5OzaDba_2gp/view?u...
библиотеку скопируйте в папку к своим либам
Понял, что ... которая не ... ветер.
Пробуйте.
https://drive.google.com/file/d/1huvdyJxwRm59NehzdOERk5OzaDba_2gp/view?u...
библиотеку скопируйте в папку к своим либам
Я так понял что нужно "добавить библиотеку", а не ложить в папку "примеры"? Буду вечером пробовать.
А по вашему - нужно сидеть в кустах и выглядывать в щелочку на мир и радоваться тому что знаеш то в чём другие окружающие - профаны.
И.М.Х.О. В действительности происходит всё совсем по другому, когда помагаеш другим то включаеш "соображалку" и самосовершенствуешся в ситуациях которые в узком направлении трудно смоделировать.
А по вашему - нужно сидеть в кустах и выглядывать в щелочку на мир и радоваться тому что знаеш то в чём другие окружающие - профаны.
Не, это не по моему. Я всего лишь порадовался за человека и посетовал на собственную неумность :)
И что бы совсем не сочли за флуд:
Как я писал, дисплей у меня похожий. Хоть и не ILI9341, но с предложенной SPFD5408 изображение даёт. Корявенькое (т.к. бракованый) но есть. Поэтому написанное ниже у Вас может и небыть.
Просто закинуть в папку в папку с библиотеками не помогло,библиотека не обнаруживалась. После перекидывания файлов Ucglib CPP и H, стала находится, но скетч не компилировался. По итогу перенес все файлы во всех папках в основную папку Ucglib и тогда залилось. Может если добавить через меню IDE, то все сразу заработает.
По изображению: Оно есть, но зеркальное по оси Y и раз в секунду идет мерцание( возможно это из-за моего брак. дисплея) Шрифт ну осеня махонький, на уровне 0.96 OLED, Возможно надо подобрать. Название станций и композиций подхватывается, а вот время и дата нет, идёт своё и при сбросе питания обнуляется.
По соединению: 1к между RX/TX мешает. Либо напрямую(возможно есть побочки) либо "увеличиватель"
По звуку: Странное поведение: иногда нет с запуска, иногда есть с пропаданиями раз в две сек. на 2 сек.,иногда изменение звука раз в сек(как у зацарапанных CD, иногда просто работает. Связано с местом подключения питания и наличия резистора. Но 100% логики не увидел.
По питанию: При питании с Vin чаще всего всё хорошо. При питании от USB дисплей не запускается(белый экран). Подумал на влияние обмена между компом, но и от пауэрбанка и от зарядки для телефона тоже самое. Может поможет инфа, что на подключенном по I2c OLED видно что идёт последовательный перебор станций.
Надеюсь полезная информация. Или не надо было влезать?
Подскажите профану пожалуйста!!! Приобрел вот такой девайс ESP32 TTGO T-Display. При подключении к компу через usb для прошивки экран заработал. После прошивки от aidar_i #5384(удачной) экран погас (синий светодиод светиться) точка доступа WiFi karadio создалась.может как то нужно включать экран? или не та прошивка?
...
...
По звуку: Странное поведение: иногда нет с запуска, иногда есть с пропаданиями раз в две сек. на 2 сек.,иногда изменение звука раз в сек(как у зацарапанных CD, иногда просто работает....
...
Надеюсь полезная информация
. ?
Спасибо за информацию. А вот по поводу отсутствия звука при запуске. У вас радио собрано по проэкту КаРадио32 или Esp32 Radio (от Edzelf(a))?
КаРадио32 плюс зелёная VS1053.
Подскажите профану пожалуйста!!! Приобрел вот такой девайс ESP32 TTGO T-Display. При подключении к компу через usb для прошивки экран заработал. После прошивки от aidar_i #5384(удачной) экран погас (синий светодиод светиться) точка доступа WiFi karadio создалась.может как то нужно включать экран? или не та прошивка?
а про конфиг файл знаете?
spazmalgon, дисплей то завелся?
Пробуйте.
https://drive.google.com/file/d/1huvdyJxwRm59NehzdOERk5OzaDba_2gp/view?usp=sharing
библиотеку скопируйте в папку к своим либам
1.Из упакованного файла addon.zip:
1.1. в папку с примерами C:\Program Files (x86)\Arduino\examples\ положил addon\addon.ino
1.2. в папку с библиотеками C:\Users\*****\Documents\Arduino\libraries\ положил папку Ucglib 2.В ардуино иде выбрал плату ардуино уно
3.Зашёл в примеры выбрал addon
4.Компиляция скетча
5. на дисплее выдало
addon:13:10: fatal error: Ucglib.h: No such file or directory
Используется: C:\Users\***\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3\libraries\SPI #include
Не используется: C:\Users\***\Documents\Arduino\libraries\SPI ^~~~~~~~~~ compilation terminated. exit status
1 Ucglib.h: No such file or directory
Попытался пойти по другому пути
1.Из упакованного файла addon.zip:
1.2. в папку с библиотеками C:\Users\*****\Documents\Arduino\libraries\ положил папку Ucglib
4.Компиляция скетча
5. на дисплее выдало
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `init':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.cpp:1313: undefined reference to `ucg_ext_none'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.cpp:1313: undefined reference to `ucg_ext_none'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.cpp:1313: undefined reference to `ucg_dev_default_cb'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.cpp:1313: undefined reference to `ucg_dev_default_cb'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.cpp:1313: undefined reference to `ucg_Init'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `setColor':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:116: undefined reference to `ucg_SetColor'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `write':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.cpp:1327: undefined reference to `ucg_DrawGlyph'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::drawBox(int, int, int, int)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:146: undefined reference to `ucg_DrawBox'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:146: undefined reference to `ucg_DrawBox'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:146: undefined reference to `ucg_DrawBox'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `drawString':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:144: undefined reference to `ucg_DrawString'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:144: undefined reference to `ucg_DrawString'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::getStrWidth(char const*)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:111: undefined reference to `ucg_GetStrWidth'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::drawBox(int, int, int, int)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:146: undefined reference to `ucg_DrawBox'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `drawString':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:144: undefined reference to `ucg_DrawString'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::setFontMode(unsigned char)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:105: undefined reference to `ucg_SetFontMode'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::getStrWidth(char const*)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:111: undefined reference to `ucg_GetStrWidth'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `drawString':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:144: undefined reference to `ucg_DrawString'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::setFontMode(unsigned char)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:105: undefined reference to `ucg_SetFontMode'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::setColor(unsigned char, unsigned char, unsigned char, unsigned char)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:114: undefined reference to `ucg_SetColor'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::drawBox(int, int, int, int)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:146: undefined reference to `ucg_DrawBox'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::getStrWidth(char const*)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:111: undefined reference to `ucg_GetStrWidth'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `drawString':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:144: undefined reference to `ucg_DrawString
' C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::getStrWidth(char const*)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:111: undefined reference to `ucg_GetStrWidth'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `drawString':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:144: undefined reference to `ucg_DrawString'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::clearScreen()':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:147: undefined reference to `ucg_ClearScreen'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::setColor(unsigned char, unsigned char, unsigned char, unsigned char)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:114: undefined reference to `ucg_SetColor'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:114: undefined reference to `ucg_SetColor'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::drawGradientLine(int, int, int, int)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:162: undefined reference to `ucg_DrawGradientLine'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::setColor(unsigned char, unsigned char, unsigned char, unsigned char)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:114: undefined reference to `ucg_SetColor'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::drawBox(int, int, int, int)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:146: undefined reference to `ucg_DrawBox'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::setColor(unsigned char, unsigned char, unsigned char, unsigned char)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:114: undefined reference to `ucg_SetColor'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::getStrWidth(char const*)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:111: undefined reference to `ucg_GetStrWidth'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:111: undefined reference to `ucg_GetStrWidth'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:111: undefined reference to `ucg_GetStrWidth'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:111: undefined reference to `ucg_GetStrWidth'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `global constructors keyed to 65535_0_addon.ino.cpp.o.2444': :(.text.startup+0x7c): undefined reference to `ucg_dev_ili9341_18x240x320' :(.text.startup+0x7e): undefined reference to `ucg_dev_ili9341_18x240x320' :(.text.startup+0x88): undefined reference to `ucg_ext_ili9341_18' :(.text.startup+0x8a): undefined reference to `ucg_ext_ili9341_18'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `begin':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.cpp:1177: undefined reference to `ucg_Init'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.cpp:1178: undefined reference to `ucg_SetFontMode'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::clearScreen()':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:147: undefined reference to `ucg_ClearScreen'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::setRotate90()':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:120: undefined reference to `ucg_SetRotate90'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::setFont(unsigned char const*)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:103: undefined reference to `ucg_font_5x8_tf'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:103: undefined reference to `ucg_font_5x8_tf'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:103: undefined reference to `ucg_font_6x10_tf'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:103: undefined reference to `ucg_font_6x10_tf'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:103: undefined reference to `ucg_SetFont'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::setFontPosTop()':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:99: undefined reference to `ucg_SetFontPosTop'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::setColor(unsigned char, unsigned char, unsigned char, unsigned char)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:114: undefined reference to `ucg_SetColor'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::getStrWidth(char const*)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:111: undefined reference to `ucg_GetStrWidth'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `drawString':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:144: undefined reference to `ucg_DrawString'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::setScale2x2()':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:125: undefined reference to `ucg_SetScale2x2'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::clearScreen()':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:147: undefined reference to `ucg_ClearScreen'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::undoScale()':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:124: undefined reference to `ucg_UndoScale'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::getStrWidth(char const*)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:111: undefined reference to `ucg_GetStrWidth'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::undoScale()':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:124: undefined reference to `ucg_UndoScale'
C:\Users\E8CA~1\AppData\Local\Temp\ccWFU3ps.ltrans0.ltrans.o: In function `Ucglib::getStrWidth(char const*)':
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:111: undefined reference to `ucg_GetStrWidth'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:111: undefined reference to `ucg_GetStrWidth'
C:\Users\������\Documents\Arduino\libraries\Ucglib/Ucglib.h:111: undefined reference to `ucg_GetStrWidth' collect2.exe: error: ld returned 1 exit
status Несколько библиотек найдено для "EEPROM.h"
Используется: C:\Users\***\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3\libraries\EEPROM
Не используется: C:\Users\***\Documents\Arduino\libraries\EEPROM
Несколько библиотек найдено для "SPI.h"
Используется: C:\Users\****\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3\libraries\SPI
Не используется: C:\Users\***\Documents\Arduino\libraries\SPI exit status 1
Ошибка компиляции для платы Arduino Uno.
Что я делаю не так? "Пните в нужную сторону".
Нет( залил то что было в архиве прошивки( четыре бин файла)
КаРадио32 плюс зелёная VS1053.
1.У меня - красного цвета плата. Завелось с пол тыка.
2. По ОТА обновлялись? У меня после обновления - после подачи питания радио играет 2 мин потом тишина приблизительно 50 сек. потом опять завелось и в последующем играет без глюков.
Это из за изменений которые пришли при обновлении по ОТА
может есть готовая прошивка именно для TTGO T-Display? Еще заметил что когда подключается к моей вай фай сети через секунд 10 отваливается обратно к wifiKaradio.
По работе карадио у меня нет проблем. Версия она из предпоследних 1.9.7, По воздуху не шью, т.к. модифицирую дрова под свой дисплей.
Все описанные глюки это при подключении доп. УНЫ с дисплеем с прошивкой от Pilnikov(типа хотел помоч разобраться.)
Русских букв в пути быть не должно.
Скачайте с гитхаба оригинальную https://github.com/olikraus/Ucglib_Arduino/releases/tag/1.5.2 Удалите старую. Вместо нее положите оригинальную. Первую версию аддона тоже удалите. Попробуйте найти и скомпилить (без загрузки) один из встроенных примеров для этой либы. Если получилось - замените файлы ucglib.h и ucglib.cpp в подпапке src на мои из последнего архива. Пробуйте собирать аддон.
может есть готовая прошивка именно для TTGO T-Display? Еще заметил что когда подключается к моей вай фай сети через секунд 10 отваливается обратно к wifiKaradio.
Прошивка для всех плат одинаковая. Отличия именно в конфиг файле. Читайте ветку
Скачайте с гитхаба оригинальную https://github.com/olikraus/Ucglib_Arduino/releases/tag/1.5.2 Удалите старую. Вместо нее положите оригинальную. Первую версию аддона тоже удалите. Попробуйте найти и скомпилить (без загрузки) один из встроенных примеров для этой либы. Если получилось - замените файлы ucglib.h и ucglib.cpp в подпапке src на мои из последнего архива. Пробуйте собирать аддон.
Пробую по этому алгоритму.
..C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino: In function 'void ucglib_graphics_test()':
GraphicsTest:118:3: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino:118:3: note: suggested alternative: 'ucg_t'
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino: In function 'void gradient()':
GraphicsTest:137:3: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino:137:3: note: suggested alternative: 'ucg_t'
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino: In function 'void box()':
GraphicsTest:169:3: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino:169:3: note: suggested alternative: 'ucg_t'
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino: In function 'void pixel_and_lines()':
GraphicsTest:201:8: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino:201:8: note: suggested alternative: 'ucg_t'
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino: In function 'void color_test()':
GraphicsTest:239:8: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino:239:8: note: suggested alternative: 'ucg_t'
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino: In function 'void cross()':
GraphicsTest:276:3: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino:276:3: note: suggested alternative: 'ucg_t'
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino: In function 'void triangle()':
GraphicsTest:325:3: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino:325:3: note: suggested alternative: 'ucg_t'
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino: In function 'void text()':
GraphicsTest:359:3: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino:359:3: note: suggested alternative: 'ucg_t'
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino: In function 'void fonts()':
GraphicsTest:392:3: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino:392:3: note: suggested alternative: 'ucg_t'
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino: In function 'void clip()':
GraphicsTest:450:3: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino:450:3: note: suggested alternative: 'ucg_t'
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino: In function 'void setup()':
GraphicsTest:532:3: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino:532:3: note: suggested alternative: 'ucg_t'
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino: In function 'void set_clip_range()':
GraphicsTest:544:19: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino:544:19: note: suggested alternative: 'ucg_t'
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino: In function 'void loop()':
GraphicsTest:556:13: error: 'ucg' was not declared in this scope
C:\Users\**\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino:556:13: note: suggested alternative: 'ucg_t'
GraphicsTest:564:5: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino:564:5: note: suggested alternative: 'ucg_t'
GraphicsTest:582:3: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\GraphicsTest\GraphicsTest.ino:582:3: note: suggested alternative: 'ucg_t'
Несколько библиотек найдено для "SPI.h"
Используется: C:\Users\***\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3\libraries\SPI
Не используется: C:\Users\***\Documents\Arduino\libraries\SPI
exit status 1
'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\HelloWorld\HelloWorld.ino: In function 'void setup()':
HelloWorld:105:3: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\HelloWorld\HelloWorld.ino:105:3: note: suggested alternative: 'ucg_t'
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\HelloWorld\HelloWorld.ino: In function 'void loop()':
HelloWorld:113:3: error: 'ucg' was not declared in this scope
C:\Users\***\Documents\Arduino\libraries\Ucglib_Arduino-1.5.2\examples\HelloWorld\HelloWorld.ino:113:3: note: suggested alternative: 'ucg_t'
Несколько библиотек найдено для "SPI.h"
Используется: C:\Users\***\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3\libraries\SPI
Не используется: C:\Users\***\Documents\Arduino\libraries\SPI
exit status 1
'ucg' was not declared in this scope
Надо раскомментировать ваш тип экрана.
Полезно почитать хотя бы минимум для работы с IDE. Можно начать от сюда https://alexgyver.ru/lessons/arduino-ide/
Свежие новости (тут должно быть рисунок слоупока :). Arduino IDE 1.8.13 спокойно скомпилировало скетч из папки с русскими символами. Для надежности запихнул саму оболочку туда же - в результате нормальная компиляция. Когда поправили я х.з. Меньше вопросов от начинающих.
To: Spazmalgon. Скачайте зип архив последней ревизии IDE(не установочную версию) с оригинального сайта и закиньте её в корень диска С. Туда же кидайте папки со скетчами. И хорошо бы убедиться, что дисплей у Вас действительно на ILI9341.
.......
Полезно
Спасибо
. хорошо бы убедиться, что дисплей у Вас действительно на ILI9341.
13 версия иде уменя стоит.
как убедится на каком котроллере мой диспей? Пытался загрузить в уно сканер дисплея. ни чего не получилось. экран белый.
Стоит через установку или ..?
По определению ID дисплея я находил в библиотеках от mcufriend и это было сложно.
Если белый, то может в сериал порте чё пишет?
Стоит через установку или ..?
По определению ID дисплея я находил в библиотеках от mcufriend и это было сложно.
Если белый, то может в сериал порте чё пишет?
Моё "чудо" завелось на вот этом скетче graphicstest из библиотеки SPFD5408_TFT_Library
// IMPORTANT: TftSpfd5408 LIBRARY MUST BE SPECIFICALLY
// CONFIGURED FOR EITHER THE TFT SHIELD OR THE BREAKOUT BOARD.
// SEE RELEVANT COMMENTS IN TftSpfd5408.h FOR SETUP.
#include // Core graphics library
#include // Hardware-specific library
// The control pins for the LCD can be assigned to any digital or
// analog pins...but we'll use the analog pins as this allows us to
// double up the pins with the touch screen (see the TFT paint example).
#define LCD_CS A3 // Chip Select goes to Analog 3
#define LCD_CD A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
#define LCD_RD A0 // LCD Read goes to Analog 0
#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin
// When using the BREAKOUT BOARD only, use these 8 data lines to the LCD:
// For the Arduino Uno, Duemilanove, Diecimila, etc.:
// D0 connects to digital pin 8 (Notice these are
// D1 connects to digital pin 9 NOT in order!)
// D2 connects to digital pin 2
// D3 connects to digital pin 3
// D4 connects to digital pin 4
// D5 connects to digital pin 5
// D6 connects to digital pin 6
// D7 connects to digital pin 7
// For the Arduino Mega, use digital pins 22 through 29
// (on the 2-row header at the end of the board).
// Assign human-readable names to some common 16-bit color values:
#define RED 0x001F
#define YELLOW 0x07FF
#define GREEN 0x07E0
#define BLUE 0xF800
#define CYAN 0xFFE0
#define MAGENTA 0xF81F
#define BLACK 0x0000
#define WHITE 0xFFFF
TftSpfd5408 tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
// If using the shield, all control and data lines are fixed, and
// a simpler declaration can optionally be used:
// TftSpfd5408 tft;
void setup(void) {
Serial.begin(9600);
Serial.println(F("TFT LCD test"));
#ifdef USE_ADAFRUIT_SHIELD_PINOUT
Serial.println(F("Using Adafruit 2.8\" TFT Arduino Shield Pinout"));
#else
Serial.println(F("Using Adafruit 2.8\" TFT Breakout Board Pinout"));
#endif
Serial.print("TFT size is "); Serial.print(tft.width()); Serial.print("x"); Serial.println(tft.height());
tft.reset();
tft.begin(0x9341);
Serial.println(F("Benchmark Time (microseconds)"));
Serial.print(F("Screen fill "));
Serial.println(testFillScreen());
delay(500);
Serial.print(F("Text "));
Serial.println(testText());
delay(3000);
Serial.print(F("Lines "));
Serial.println(testLines(CYAN));
delay(500);
Serial.print(F("Horiz/Vert Lines "));
Serial.println(testFastLines(RED, BLUE));
delay(500);
Serial.print(F("Rectangles (outline) "));
Serial.println(testRects(GREEN));
delay(500);
Serial.print(F("Rectangles (filled) "));
Serial.println(testFilledRects(YELLOW, MAGENTA));
delay(500);
Serial.print(F("Circles (filled) "));
Serial.println(testFilledCircles(10, MAGENTA));
Serial.print(F("Circles (outline) "));
Serial.println(testCircles(10, WHITE));
delay(500);
Serial.print(F("Triangles (outline) "));
Serial.println(testTriangles());
delay(500);
Serial.print(F("Triangles (filled) "));
Serial.println(testFilledTriangles());
delay(500);
Serial.print(F("Rounded rects (outline) "));
Serial.println(testRoundRects());
delay(500);
Serial.print(F("Rounded rects (filled) "));
Serial.println(testFilledRoundRects());
delay(500);
Serial.println(F("Done!"));
}
void loop(void) {
for(uint8_t rotation=0; rotation<4; rotation++) {
tft.setRotation(rotation);
testText();
delay(2000);
}
}
unsigned long testFillScreen() {
unsigned long start = micros();
tft.fillScreen(BLACK);
tft.fillScreen(RED);
tft.fillScreen(GREEN);
tft.fillScreen(BLUE);
tft.fillScreen(BLACK);
return micros() - start;
}
unsigned long testText() {
tft.fillScreen(BLACK);
unsigned long start = micros();
tft.setCursor(0, 0);
tft.setTextColor(WHITE); tft.setTextSize(3);
tft.println("Hello World!");
tft.setTextColor(YELLOW); tft.setTextSize(3);
tft.println(12345);
tft.setTextColor(RED); tft.setTextSize(3);
tft.println(222222222);
tft.setTextColor(WHITE); tft.setTextSize(8);
tft.println("Groop");
tft.setTextSize(2);
tft.println("I implore thee,");
tft.setTextSize(1);
tft.println("my foonting turlingdromes.");
tft.println("And hooptiously drangle me");
tft.println("with crinkly bindlewurdles,");
tft.println("Or I will rend thee");
tft.println("in the gobberwarts");
tft.println("with my blurglecruncheon,");
tft.println("see if I don't!");
return micros() - start;
}
unsigned long testLines(uint16_t color) {
unsigned long start, t;
int x1, y1, x2, y2,
w = tft.width(),
h = tft.height();
tft.fillScreen(BLACK);
x1 = y1 = 0;
y2 = h - 1;
start = micros();
for(x2=0; x2 x2 = w - 1;
for(y2=0; y2 t = micros() - start; // fillScreen doesn't count against timing
tft.fillScreen(BLACK);
x1 = w - 1;
y1 = 0;
y2 = h - 1;
start = micros();
for(x2=0; x2 x2 = 0;
for(y2=0; y2 t += micros() - start;
tft.fillScreen(BLACK);
x1 = 0;
y1 = h - 1;
y2 = 0;
start = micros();
for(x2=0; x2 x2 = w - 1;
for(y2=0; y2 t += micros() - start;
tft.fillScreen(BLACK);
x1 = w - 1;
y1 = h - 1;
y2 = 0;
start = micros();
for(x2=0; x2 x2 = 0;
for(y2=0; y2
return micros() - start;
}
unsigned long testFastLines(uint16_t color1, uint16_t color2) {
unsigned long start;
int x, y, w = tft.width(), h = tft.height();
tft.fillScreen(BLACK);
start = micros();
for(y=0; y for(x=0; x
return micros() - start;
}
unsigned long testRects(uint16_t color) {
unsigned long start;
int n, i, i2,
cx = tft.width() / 2,
cy = tft.height() / 2;
tft.fillScreen(BLACK);
n = min(tft.width(), tft.height());
start = micros();
for(i=2; i i2 = i / 2;
tft.drawRect(cx-i2, cy-i2, i, i, color);
}
return micros() - start;
}
unsigned long testFilledRects(uint16_t color1, uint16_t color2) {
unsigned long start, t = 0;
int n, i, i2,
cx = tft.width() / 2 - 1,
cy = tft.height() / 2 - 1;
tft.fillScreen(BLACK);
n = min(tft.width(), tft.height());
for(i=n; i>0; i-=6) {
i2 = i / 2;
start = micros();
tft.fillRect(cx-i2, cy-i2, i, i, color1);
t += micros() - start;
// Outlines are not included in timing results
tft.drawRect(cx-i2, cy-i2, i, i, color2);
}
return t;
}
unsigned long testFilledCircles(uint8_t radius, uint16_t color) {
unsigned long start;
int x, y, w = tft.width(), h = tft.height(), r2 = radius * 2;
tft.fillScreen(BLACK);
start = micros();
for(x=radius; x for(y=radius; y tft.fillCircle(x, y, radius, color);
}
}
return micros() - start;
}
unsigned long testCircles(uint8_t radius, uint16_t color) {
unsigned long start;
int x, y, r2 = radius * 2,
w = tft.width() + radius,
h = tft.height() + radius;
// Screen is not cleared for this one -- this is
// intentional and does not affect the reported time.
start = micros();
for(x=0; x for(y=0; y tft.drawCircle(x, y, radius, color);
}
}
return micros() - start;
}
unsigned long testTriangles() {
unsigned long start;
int n, i, cx = tft.width() / 2 - 1,
cy = tft.height() / 2 - 1;
tft.fillScreen(BLACK);
n = min(cx, cy);
start = micros();
for(i=0; i tft.drawTriangle(
cx , cy - i, // peak
cx - i, cy + i, // bottom left
cx + i, cy + i, // bottom right
tft.color565(0, 0, i));
}
return micros() - start;
}
unsigned long testFilledTriangles() {
unsigned long start, t = 0;
int i, cx = tft.width() / 2 - 1,
cy = tft.height() / 2 - 1;
tft.fillScreen(BLACK);
start = micros();
for(i=min(cx,cy); i>10; i-=5) {
start = micros();
tft.fillTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i,
tft.color565(0, i, i));
t += micros() - start;
tft.drawTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i,
tft.color565(i, i, 0));
}
return t;
}
unsigned long testRoundRects() {
unsigned long start;
int w, i, i2,
cx = tft.width() / 2 - 1,
cy = tft.height() / 2 - 1;
tft.fillScreen(BLACK);
w = min(tft.width(), tft.height());
start = micros();
for(i=0; i i2 = i / 2;
tft.drawRoundRect(cx-i2, cy-i2, i, i, i/8, tft.color565(i, 0, 0));
}
return micros() - start;
}
unsigned long testFilledRoundRects() {
unsigned long start;
int i, i2,
cx = tft.width() / 2 - 1,
cy = tft.height() / 2 - 1;
tft.fillScreen(BLACK);
start = micros();
for(i=min(tft.width(), tft.height()); i>20; i-=6) {
i2 = i / 2;
tft.fillRoundRect(cx-i2, cy-i2, i, i, i/8, tft.color565(0, i, 0));
}
return micros() - start;
}
Вы на меня то не отвлекайтесь, а делайте , что Вам Pilnikov говорит.
С этим скетчем и у меня работает, но чип у меня ни фига не ILI9341.
To: Pilnikov. По последнему алгоритму у меня на голой ардуинке с экраном (без подключения к ESP) - усё белое. Но это так , для справки.
Последний скеч сделан конкретно под шилд spazmalgona. Там шину данных надо точно также подключать как в шилде. D0 - 8 D1- 9 D2 -2 ÷ D7-7 . Dx - это пины шилда, цифири - номера цифровых пинов уны
Дел
Дел
Наверное я отключусь, что бы не вносить сумятицу. Но на последок уточню:
!. Первая версия Вашего "аддона" у меня давала белый экран.
2. Вторая заработала с результатом указанным в #8562 . У Спазмалгона не скомпилировалось, результат не ясен.
В сообщении #8573 Вы написали как устанавливать библиотеки. Сделал. Скачал заново "аддон" (вдруг что поменяли) По этому варианту получаем белый экран. При компиляции "аддона" из пункта 2 - белый экран.
Вот блин все равно нихрена не понятно. Я понимаю что уровень участников - "тестер". Но как то предыдущие либы были скачаны (даже с гитхаба) и запущены. А с этой че не так? Почему у меня все собирается "из коробки"? У меня сама иде стоит "по умолчанию" в c:\Program Files (x86)\Arduino\, скечи и либы лежат на диске z: в папке z:\sketch\. Скечи в корне а либы в подпапке libraries. И все блин работает. Иде настроено так
И все!!!! Работает. Без бубна.
Если совсем все плохо, то все файлы либы (из папок src и clib) можно сложить в папку скеча (addon) линейно. Но при этом внутри файлов придется править #include. Например #include "clib/ucg.h" надо поправить на #include "ucg.h" и в самом скече #include <ucglib.h> на #include "ucglib.h" Скобки на кавычки. Кавычки говорят, что файл лежит тут-же, а скобки - что его где-то надо поискать.
У меня почти аналогично
C:\Program Files (x86)\Arduino\
C:\Users\***\Documents\Arduino\libraries\
заливал скетчи с радио (и неоднократно) всё тоже работало. А вт с "чудом" что то не получается.
Взял простенький скетч и библиотеки которую вы указали.
/*
HelloWorld.ino
A very simple example for Ucglib
Universal uC Color Graphics Library
Copyright (c) 2014, olikraus@gmail.com
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list
of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
18 Feb 2014:
ROM Size Font Mode
9928 NONE
10942 TRANSPARENT (1014 Bytes)
11650 SOLID (1712 Bytes)
12214 TRANSPARENT+SOLID
*/
#include
#include "Ucglib.h"
/*
Hardware SPI Pins:
Arduino Uno sclk=13, data=11
Arduino Due sclk=76, data=75
Arduino Mega sclk=52, data=51
>>> Please uncomment (and update) one of the following constructors. <<<
*/
//Ucglib8BitPortD ucg(ucg_dev_ili9325_18x240x320_itdb02, ucg_ext_ili9325_18, /* wr= */ 18 , /* cd= */ 19 , /* cs= */ 17, /* reset= */ 16 );
//Ucglib8Bit ucg(ucg_dev_ili9325_18x240x320_itdb02, ucg_ext_ili9325_18, 0, 1, 2, 3, 4, 5, 6, 7, /* wr= */ 18 , /* cd= */ 19 , /* cs= */ 17, /* reset= */ 16 );
//Ucglib4WireSWSPI ucg(ucg_dev_ili9325_18x240x320_itdb02, ucg_ext_ili9325_18, /*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8); // not working
//Ucglib4WireSWSPI ucg(ucg_dev_ili9325_spi_18x240x320, ucg_ext_ili9325_spi_18, /*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8); // not working
//Ucglib3WireILI9325SWSPI ucg(ucg_dev_ili9325_spi_18x240x320, ucg_ext_ili9325_spi_18, /*sclk=*/ 13, /*data=*/ 11, /*cs=*/ 10, /*reset=*/ 8); // not working
//Ucglib3WireILI9325SWSPI ucg(ucg_dev_ili9325_18x240x320_itdb02, ucg_ext_ili9325_18, /*sclk=*/ 13, /*data=*/ 11, /*cs=*/ 10, /*reset=*/ 8); // not working
//Ucglib_ST7735_18x128x160_SWSPI ucg(/*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 9, /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_ST7735_18x128x160_HWSPI ucg(/*cd=*/ 9, /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_ILI9163_18x128x128_SWSPI ucg(/*sclk=*/ 7, /*data=*/ 6, /*cd=*/ 5, /*cs=*/ 3, /*reset=*/ 4);
//Ucglib_ILI9163_18x128x128_HWSPI ucg(/*cd=*/ 9, /*cs=*/ 10, /*reset=*/ 8); /* HW SPI Adapter */
//Ucglib_ILI9341_18x240x320_SWSPI ucg(/*sclk=*/ 7, /*data=*/ 6, /*cd=*/ 5, /*cs=*/ 3, /*reset=*/ 4);
//Ucglib_ILI9341_18x240x320_SWSPI ucg(/*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 9, /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_ILI9341_18x240x320_HWSPI ucg(/*cd=*/ 9, /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_ILI9341_18x240x320_SWSPI ucg(/*sclk=*/ 4, /*data=*/ 3, /*cd=*/ 6, /*cs=*/ 7, /*reset=*/ 5); /* Elec Freaks Shield */
//Ucglib_HX8352C_18x240x400_SWSPI ucg(/*sclk=*/ 7, /*data=*/ 6, /*cd=*/ 5, /*cs=*/ 3, /*reset=*/ 4);
//Ucglib_HX8352C_18x240x400_HWSPI ucg(/*cd=*/ 9, /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_ILI9486_18x320x480_SWSPI ucg(/*sclk=*/ 7, /*data=*/ 6, /*cd=*/ 5, /*cs=*/ 3, /*reset=*/ 4);
//Ucglib_ILI9486_18x320x480_HWSPI ucg(/*cd=*/ 9, /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_SSD1351_18x128x128_SWSPI ucg(/*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 9, /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_SSD1351_18x128x128_HWSPI ucg(/*cd=*/ 9, /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_SSD1351_18x128x128_FT_SWSPI ucg(/*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 9, /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_SSD1351_18x128x128_FT_HWSPI ucg(/*cd=*/ 9, /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_SSD1351_18x128x128_FT_SWSPI ucg(/*sclk=*/ 4, /*data=*/ 17, /*cd=*/ 16, /*cs=*/ 0, /*reset=*/ 2); /* FT SSD1351 direct connect to ESP32 */
//Ucglib_PCF8833_16x132x132_SWSPI ucg(/*sclk=*/ 13, /*data=*/ 11, /*cs=*/ 9, /*reset=*/ 8); /* linksprite board */
//Ucglib_PCF8833_16x132x132_HWSPI ucg(/*cs=*/ 9, /*reset=*/ 8); /* linksprite board */
//Ucglib_LD50T6160_18x160x128_6Bit ucg( /*d0 =*/ d0, /*d1 =*/ d1, /*d2 =*/ d2, /*d3 =*/ d3, /*d4 =*/ d4, /*d5 =*/ d5, /*wr=*/ wr, /*cd=*/ cd, /*cs=*/ cs, /*reset=*/ reset);
//Ucglib_LD50T6160_18x160x128_6Bit ucg( /*d0 =*/ 16, /*d1 =*/ 17, /*d2 =*/ 18, /*d3 =*/ 19, /*d4 =*/ 20, /*d5 =*/ 21, /*wr=*/ 14, /*cd=*/ 15); /* Samsung 160x128 OLED with 6Bit minimal interface with Due */
//Ucglib_LD50T6160_18x160x128_6Bit ucg( /*d0 =*/ 5, /*d1 =*/ 4, /*d2 =*/ 3, /*d3 =*/ 2, /*d4 =*/ 1, /*d5 =*/ 0, /*wr=*/ 7, /*cd=*/ 6); /* Samsung 160x128 OLED with 6Bit minimal interface with Uno */
//Ucglib_SSD1331_18x96x64_UNIVISION_SWSPI ucg(/*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 9, /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_SSD1331_18x96x64_UNIVISION_HWSPI ucg(/*cd=*/ 9, /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_SEPS225_16x128x128_UNIVISION_SWSPI ucg(/*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 9, /*cs=*/ 10, /*reset=*/ 8);
Ucglib_SEPS225_16x128x128_UNIVISION_HWSPI ucg(/*cd=*/ 9, /*cs=*/ 10, /*reset=*/ 8);
void setup(void)
{
delay(1000);
ucg.begin(UCG_FONT_MODE_TRANSPARENT);
//ucg.begin(UCG_FONT_MODE_SOLID);
ucg.clearScreen();
}
void loop(void)
{
//ucg.setRotate90();
ucg.setFont(ucg_font_ncenR12_tr);
ucg.setColor(255, 255, 255);
//ucg.setColor(0, 255, 0);
ucg.setColor(1, 255, 0,0);
ucg.setPrintPos(0,25);
ucg.print("Hello World!");
delay(500);
}
Перебирал для каждой платы. Результат - сплошной белый экран.
вот лог загрузки
avrdude: Version 6.3-20190619
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "C:\Users\������\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"
Using Port : COM9
Using Programmer : arduino
Overriding Baud Rate : 115200
AVR Part : ATmega328P
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : Arduino
Description : Arduino
Hardware Version: 3
Firmware Version: 4.4
Vtarget : 0.3 V
Varef : 0.3 V
Oscillator : 28.800 kHz
SCK period : 3.3 us
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading input file "C:\Users\E8CA~1\AppData\Local\Temp\arduino_build_341720/HelloWorld.ino.hex"
avrdude: writing flash (9352 bytes):
Writing | ################################################## | 100% 1.56s
avrdude: 9352 bytes of flash written
avrdude: verifying flash memory against C:\Users\E8CA~1\AppData\Local\Temp\arduino_build_341720/HelloWorld.ino.hex:
avrdude: load data flash data from input file C:\Users\E8CA~1\AppData\Local\Temp\arduino_build_341720/HelloWorld.ino.hex:
avrdude: input file C:\Users\E8CA~1\AppData\Local\Temp\arduino_build_341720/HelloWorld.ino.hex contains 9352 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 1.27s
avrdude: verifying ...
avrdude: 9352 bytes of flash verified
avrdude done. Thank you.
Стандартные примеры на вашей шилде работать не будут. Вам надо 2 файла подменить в папке src, а потом пробовать собирать аддон. Либо попробовать в пример вставить конструктор из аддона (строку Ucglib_ILI9341_8BIT_PORTD ..... которая). Остальные конструкторы нужно закомментить.
может есть готовая прошивка именно для TTGO T-Display? ...
У TTGO T-Display нестандартное разрешение экрана (чип ST7789 1,14 дюймов IPS 240x135) для стандартной прошивки KaRadio32 (см. гитхаб: https://github.com/karawin/Ka-Radio32#lcd-or-oled-declaration ), поэтому данная плата с дисплеем работать не будет. Без экрана, при правильно настроенном конфиге, звук извлечь можно.
может есть готовая прошивка именно для TTGO T-Display? ...
У TTGO T-Display нестандартное разрешение экрана (чип ST7789 1,14 дюймов IPS 240x135) для стандартной прошивки KaRadio32 (см. гитхаб: https://github.com/karawin/Ka-Radio32#lcd-or-oled-declaration ), поэтому данная плата с дисплеем работать не будет. Без экрана, при правильно настроенном конфиге, звук извлечь можно.
То есть можно к нему подключить внешний дисплей рабочий,а саму ttgo просто использовать как контролёр? Так заведется? Можно шить стандартной полной?Или уже покупать проверенный комплект из esp 32 и дисплея?
... Я взялся за разводку голого чипа в надежде пристроить "пострадавшего" после неудачной запайки модуля. Где-то ранее фотку сюда выкладывал...
Могу в конверте прислать платку вровера с убитым чипом есп32, если захотите попробовать его перепаять :) Валяется без дела. Но он со снятым экраном (утерян).
Имхо неудачный выбор модуля
Сейчас удачный вариант -что-то вроде
https://aliexpress.ru/item/4000025055479.html
У себя юзал связку CSR8675 + PCM5102 (предыдущая версия но уже с APT-X HD) - при стриминге флак радио (типа sectorradio) с совместимого телефона с APT-X HD (Пиксель 4) качество звука потрясающее даже с этим копеечным цапом
Имхо неудачный выбор модуля
Сейчас удачный вариант -что-то вроде
https://aliexpress.ru/item/4000025055479.html
У себя юзал связку CSR8675 + PCM5102 (предыдущая версия но уже с APT-X HD) - при стриминге флак радио (типа sectorradio) с совместимого телефона с APT-X HD (Пиксель 4) качество звука потрясающее даже с этим копеечным цапом
Для моих целей на сегодня - BT201 это отличный модуль. У него на борту не только Bluetooth но и юсб и микросд разъемы для прослушивания музыки, а также он передает инфу через УАРТ которая выводиться у меня на экране (актуально только для юсб и микросд).
ТО pilnikov
Добрый вечер. Понимаю, что достал вас, но всё же - по этому скетчу (для ардуино уно) завелось "чудо"
// Simple Test Sketch for Arduino UNO & 2.4" LCD TFT 320x240 Shield from Banggood.com
// SKU156315 Using the ILITEK ILI9341 or Samsung S6D04H0X Driver Chip(Almost identical chips!)
// 240x320 Resolution RGB and 262K Colors.
// Modified Sketch for UNO by KB1UIF(A.Tedds)
// Based on the new v2 simple UNO test sketch from Banggood.com.
// Various errors were in the Banggood release, which I have corrected.
// I have also added more functions and lots of comments.
// Use at your own risk!!
// Arduino UNO pin usage:
// LCD Data Bits : 7 6 5 4 3 2 1 0
// Uno dig. pins : 7 6 5 4 3 2 9 8
// Uno port/pins : PD7 PD6 PD5 PD4 PD3 PD2 PB1 PB0
// Color maping HIGH 5Bits 00000 BLUE, middle 5Bits 00000 GREEN, Low 6 Bits 000000 RED.
// 0000 0,00 0 00,00 0000
// With MADCTL set to 0x40, Original Value 48, For RGB-BGR Flip D3.
#define WHITE 0x0000
#define RED 0xFFC0
#define GREEN 0xF81F
#define BLUE 0x07FF
#define CYAN 0x003F
#define MAGENTA 0x07C0
#define YELLOW 0xF800
#define BLACK 0xFFFF
//Define TFT LCD Size
#define TFTWIDTH 240
#define TFTHEIGHT 320
#define LCD_RD A0 //Define A0 as LCD_RD (Read)
#define LCD_WR A1 //Define A1 as LCD_WR (Write)
#define LCD_RS A2 //Define A2 as LCD_RS (0=Command/1=Data)
#define LCD_CS A3 //Define A3 as LCD_CS (Chip Select)
#define LCD_RST A4 //Define A4 as LCD_RST (Shield Reset, NOT to the Reset Button)
//-------------------------------------------------------------------------------------------
void Lcd_Writ_Bus(unsigned char d)
{
//Clear port D relevent bits then AND input (d) with Mask (bits 0-1) for port D out (6 data bits 2-7).
PORTD = (PORTD & B00000011) | ((d) & B11111100);
//Clear port B relevent bits then AND input (d) with Mask (bits 2-7) for port B out (2 data bits 0-1).
PORTB = (PORTB & B11111100) | ((d) & B00000011);
//Now strobe the LCD shield write control line LCD_WR (A1).
*(portOutputRegister(digitalPinToPort(LCD_WR))) &= ~digitalPinToBitMask(LCD_WR);//LCD_WR=0
*(portOutputRegister(digitalPinToPort(LCD_WR))) |= digitalPinToBitMask(LCD_WR); //LCD_WR=1
}
//-------------------------------------------------------------------------------------------
void Lcd_Write_Com(unsigned char VH)
{
*(portOutputRegister(digitalPinToPort(LCD_RS))) &= ~digitalPinToBitMask(LCD_RS);//LCD_RS=0 (Set Control line for Command)
Lcd_Writ_Bus(VH);//Write Hex Value of COM Register passed to Lcd_Write_Com.
}
//-------------------------------------------------------------------------------------------
void Lcd_Write_Data(unsigned char VH)
{
*(portOutputRegister(digitalPinToPort(LCD_RS))) |= digitalPinToBitMask(LCD_RS); //LCD_RS=1 (Set control line for Data)
Lcd_Writ_Bus(VH);//Write Hex Value of Data passed to Lcd_Write_Data.
}
//-------------------------------------------------------------------------------------------
void Lcd_Write_Com_Data(unsigned char com, unsigned char dat)
{
Lcd_Write_Com(com);//Write Hex Value of COM Register passed to Lcd_Write_Com_Data.
Lcd_Write_Data(dat);//Write Hex Value of Data passed to Lcd_Write_Com_Data.
}
//-------------------------------------------------------------------------------------------
void Address_set(unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2)
{
Lcd_Write_Com(0x2a);//REG 2Ah=COLADDRSET Command 4 Values.
Lcd_Write_Data(x1 >> 8); //Send Value of x1 with right bit shift x8.
Lcd_Write_Data(x1);//Send Value of x1.
Lcd_Write_Data(x2 >> 8); //Send Value of x2 with right bit shift x8.
Lcd_Write_Data(x2);//Send Value of x2.
Lcd_Write_Com(0x2b);//REG 2Bh=PAGEADDRSET Command 4 Values.
Lcd_Write_Data(y1 >> 8); //Send Value of y1 with right bit shift x8.
Lcd_Write_Data(y1);//Send Value of y1.
Lcd_Write_Data(y2 >> 8); //Send Value of y2 with right bit shift x8.
Lcd_Write_Data(y2);//Send Value of y2.
Lcd_Write_Com(0x2c); // REG 2Ch = Memory Write
}
//-------------------------------------------------------------------------------------------
//Init commands for Shield.
void Lcd_Init(void)
{
digitalWrite(LCD_RST, HIGH); // Take line HIGH.
delay(5); //delay of 5mS.
digitalWrite(LCD_RST, LOW); //Take line LOW to Reset Shield, Active LOW.
delay(15);//delay of 15mS.
digitalWrite(LCD_RST, HIGH); //Take Line HIGH allow Shield to function.
delay(15);//delay of 15mS.
digitalWrite(LCD_CS, HIGH); //Take Chip Select HIGH, Disable Shield Chip, Active LOW.
digitalWrite(LCD_WR, HIGH); //Take Write line HIGH.
digitalWrite(LCD_CS, LOW); //Take Chip Select LOW, Enable Shield Chip, Active LOW.
Lcd_Write_Com(0xC0); //Power control 1
Lcd_Write_Data(0x23); //VRH[5:0] 0010 0011 4.60 Volts, default is 4.50 Volts.
Lcd_Write_Com(0xC1); //Power control 2, Sets the factor used in the step-up circuits
Lcd_Write_Data(0x10); //BT[2:0] 0001 0000 default is 10
Lcd_Write_Com(0xC5); //C5h VCOM control 1 (Contrast?)
Lcd_Write_Data(0x3e); //VMH 0011 1110 +4.250 Volts
Lcd_Write_Data(0x28); //VML 0010 1000 -1.500 Volts
Lcd_Write_Com(0xC7); //C7h VCOM control2 Set the VCOM offset voltage.
Lcd_Write_Data(0x86); //1000 0110 VML=58 VMH=58
Lcd_Write_Com(0x36); //MADCTL, Memory Access Control.
Lcd_Write_Data(0x40); //Original Value 48, For RGB-BGR Flip D3 40h
Lcd_Write_Com(0x3A); //COLMOD (Interface Pixel Format)
Lcd_Write_Data(0x55); //RGB Interface, Color Format 16Bit,Control Interface Color Format 16bit.
Lcd_Write_Com(0xB1); //B1h, Frame Rate Control.
Lcd_Write_Data(0x00); //[1:0] DIVA division ratio 00 = fosc
Lcd_Write_Data(0x18); //[4:0] RTNA Frame Rate 18h 0001 1000 = 79Hz
Lcd_Write_Com(0xB6); //B6h Display Function Control.
Lcd_Write_Data(0x08); //08h PTG [3:2] & PT [1:0] 0000 1000
//PTG [3:2]: Set the scan mode in non-display area.
//PT [1:0]: Determine source/VCOM output in a non-display area in the partial display mode.
Lcd_Write_Data(0x82); //1000 0010 REV[D7] GS[D6] SS[D5] SM[D4] ISC[3:0]=5Frames 85mS.
Lcd_Write_Data(0x27); //0010 0111 NL[5:0]
Lcd_Write_Com(0x11); //Wake, Exit Sleep.
delay(120); //120mS Delay to allow shield to settle.
Lcd_Write_Com(0x29); //Display on.
Lcd_Write_Com(0x2c); //Memory Write.
}
//-------------------------------------------------------------------------------------------
void invertColor()
{
Lcd_Write_Com(0x21); //Invert Colors.
}
//-------------------------------------------------------------------------------------------
void normalColor()
{
Lcd_Write_Com(0x20); //Normal Colors.
}
//-------------------------------------------------------------------------------------------
void blink(int Times, int DL) //invert colors #Times, DL delay between each.
{
for (int t = 1; t <= Times; ++t)
{
Lcd_Write_Com(0x21); //Invert
delay(DL); //DL delay between inversion and normal.
Lcd_Write_Com(0x20); //Normal
delay(DL); //DL delay between normal and inversion.
}
}
//-------------------------------------------------------------------------------------------
void drawCircle(int x, int y, int radius, unsigned color)
{
int f = 1 - radius;
int ddF_x = 1;
int ddF_y = -2 * radius;
int x1 = 0;
int y1 = radius;
digitalWrite(LCD_CS, LOW);//Chip Select Active.
Address_set(x, y + radius, x, y + radius);
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
Address_set(x, y - radius, x, y - radius);
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
Address_set(x + radius, y, x + radius, y);
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
Address_set(x - radius, y, x - radius, y);
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
while (x1 < y1)
{
if (f >= 0)
{
y1--;
ddF_y += 2;
f += ddF_y;
}
x1++;
ddF_x += 2;
f += ddF_x;
Address_set(x + x1, y + y1, x + x1, y + y1);
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
Address_set(x - x1, y + y1, x - x1, y + y1);
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
Address_set(x + x1, y - y1, x + x1, y - y1);
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
Address_set(x - x1, y - y1, x - x1, y - y1);
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
Address_set(x + y1, y + x1, x + y1, y + x1);
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
Address_set(x - y1, y + x1, x - y1, y + x1);
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
Address_set(x + y1, y - x1, x + y1, y - x1);
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
Address_set(x - y1, y - x1, x - y1, y - x1);
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
}
}
//-------------------------------------------------------------------------------------------
void drawPixel(unsigned int x, unsigned int y, unsigned int color)
{
//Check for values falling in display area.
if ((x < 0) || (y < 0) || (x >= TFTWIDTH) || (y >= TFTHEIGHT)) return;
digitalWrite(LCD_CS, LOW);// Chip Select active
Address_set(x, y, TFTWIDTH - 1, TFTHEIGHT - 1);
digitalWrite(LCD_CS, LOW);// Chip Select active
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
}
//-------------------------------------------------------------------------------------------
void drawLine(unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2, unsigned int color)
{
unsigned int dx = (x2 > x1 ? x2 - x1 : x1 - x2);
short xstep = x2 > x1 ? 1 : -1;
unsigned int dy = (y2 > y1 ? y2 - y1 : y1 - y2);
short ystep = y2 > y1 ? 1 : -1;
int col = x1, row = y1;
digitalWrite(LCD_CS, LOW);
if (dx < dy)
{
int t = - (dy >> 1);
while (true)
{
Address_set (col, row, col, row);
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
if (row == y2)
return;
row += ystep;
t += dx;
if (t >= 0)
{
col += xstep;
t -= dy;
}
}
}
else
{
int t = - (dx >> 1);
while (true)
{
Address_set (col, row, col, row);
Lcd_Write_Com(0x2C);
Lcd_Write_Data(color >> 8);
Lcd_Write_Data(color);
if (col == x2)
return;
col += xstep;
t += dy;
if (t >= 0)
{
row += ystep;
t -= dx;
}
}
}
}
//-------------------------------------------------------------------------------------------
void drawTriangle(unsigned x0, unsigned y0, unsigned x1, unsigned y1, unsigned x2, unsigned y2, uint16_t color)
{
drawLine(x0, y0, x1, y1, color);
drawLine(x1, y1, x2, y2, color);
drawLine(x2, y2, x0, y0, color);
}
//-------------------------------------------------------------------------------------------
void H_line(unsigned int x, unsigned int y, unsigned int l, unsigned int c)
{
unsigned int i, j;
Lcd_Write_Com(0x02c); //write_memory_start
digitalWrite(LCD_RS, HIGH);
digitalWrite(LCD_CS, LOW);
l = l + x;
Address_set(x, y, l, y);
j = l * 2;
for (i = 1; i <= j; i++)
{
Lcd_Write_Data(c);
}
}
//-------------------------------------------------------------------------------------------
void V_line(unsigned int x, unsigned int y, unsigned int l, unsigned int c)
{
unsigned int i, j;
Lcd_Write_Com(0x02c); //write_memory_start
digitalWrite(LCD_RS, HIGH);
digitalWrite(LCD_CS, LOW);
l = l + y;
Address_set(x, y, x, l);
j = l * 2;
for (i = 1; i <= j; i++)
{
Lcd_Write_Data(c);
}
}
//-------------------------------------------------------------------------------------------
//Draw Rectangle.
void Rect(unsigned int x, unsigned int y, unsigned int w, unsigned int h, unsigned int c)
{
H_line(x , y , w, c);
H_line(x , y + h, w, c);
V_line(x , y , h, c);
V_line(x + w, y , h, c);
}
//-------------------------------------------------------------------------------------------
//Draw Filled Rectangle.
void Rectf(unsigned int x, unsigned int y, unsigned int w, unsigned int h, unsigned int c)
{
unsigned int i;
for (i = 0; i < h; i++)
{
H_line(x , y , w, c);
H_line(x , y + i, w, c);
}
}
//-------------------------------------------------------------------------------------------
int RGB(int r, int g, int b)
{
return r << 16 | g << 8 | b;
}
//-------------------------------------------------------------------------------------------
//Fill Screen with color j
void LCD_Clear(unsigned int j)
{
unsigned int i, m;
Address_set(0, 0, 239, 319);
digitalWrite(LCD_CS, LOW); //Chip Select Active.
for (i = 0; i < 240; i++)
for (m = 0; m < 320; m++)
{
Lcd_Write_Data(j >> 8);
Lcd_Write_Data(j);
}
}
//-------------------------------------------------------------------------------------------
void setup()
{
for (int p = 2; p < 10; p++)
{
pinMode(p, OUTPUT); //Set Pins 2-9 as Output.
}
pinMode(A0, OUTPUT); //Set A0 as Output for LCD_RD (Read)
pinMode(A1, OUTPUT); //Set A1 as Output for LCD_WR (Write)
pinMode(A2, OUTPUT); //Set A2 as Output for LCD_RS (0=Command/1=Data)
pinMode(A3, OUTPUT); //Set A3 as Output for LCD_CS (Chip Select, Active LOW)
pinMode(A4, OUTPUT); //Set A4 as Output for LCD_RST (Soft Reset, Active LOW)
digitalWrite(A0, HIGH);//Set idle State for LCD_RD.
digitalWrite(A1, HIGH);//Set Idle State for LCD_WR.
digitalWrite(A2, HIGH);//Set input as Data for LCD_RS (0=Command/1=Data)
digitalWrite(A3, HIGH);//Set Idle State for LCD_CS Active LOW.
digitalWrite(A4, HIGH);//Set Idle State for LCD_RST Soft Reset active LOW.
Lcd_Init();// Run Init LCD Shield Routine.
LCD_Clear(BLACK);//Clear Screen to Black.
}
//-------------------------------------------------------------------------------------------
void loop()
{
//LCD_Clear(BLACK);
LCD_Clear(WHITE);//Clear Screen to White
delay(1000);
invertColor();
delay(1000);
normalColor();
LCD_Clear(WHITE);//Clear Screen to White
blink(1, 200); //Blink 1 times with 200mS Delay between.
LCD_Clear(RED);//Clear Screen to Red
blink(1, 200);
LCD_Clear(GREEN);//Clear Screen to Green
blink(1, 200);
LCD_Clear(BLUE);//Clear Screen to Blue
blink(1, 200);
LCD_Clear(YELLOW);//Clear Screen to Yellow
blink(1, 200);
LCD_Clear(MAGENTA);//Clear Screen to Magenta
blink(1, 200);
LCD_Clear(CYAN);//Clear Screen to Cyan
blink(1, 200);
LCD_Clear(BLACK);//Clear Screen to Black
blink(1, 200);
LCD_Clear(BLACK);//Clear Screen to Black
//Draw 50 random size, random position, random color triangles.
for (int i = 0; i < 50; i++)
{
drawTriangle(random(239), random(319), random(239), random(319), random(239), random(319), random(65535)); //drawTriangle(x0,y0,x1,y1,x2,y2,Color);
}
delay(2000);
blink(3, 500);
//Draw 200 random size, random position, random color Lines.
LCD_Clear(BLACK);//Clear Screen to Black
for (int i = 0; i < 200; i++)
{
drawLine(random(240), random(320), random(240), random(320), random(65535)); // Lines at x, y, x1, y1, color.
}
delay(2000);//Delay of 2 Sec.
blink(3, 500); //Blink 5 times with 100mS Delay between.
LCD_Clear(BLACK);//Clear Screen to Black
//Draw 10000 random position and random color dots.
for (int i = 0; i < 10000; i++)
{
drawPixel(random(239), random(319), random(65535)); // Pixels at x, y, color.
}
delay(2000);//Delay of 2 Sec.
blink(3, 500); //Blink 5 times with 100mS Delay between.
LCD_Clear(BLACK);//Clear Screen to Black
//Draw 100 random size, random position and random color rectangles.
for (int i = 0; i < 100; i++)
{
Rect(random(120), random(160), random(120), random(160), random(65535)); // rectangle at x, y, width, hight, color.
}
delay(2000);//Delay of 2 Sec.
blink(3, 500); //Blink 5 times with 100mS Delay between.
LCD_Clear(BLACK);//Clear Screen to Black
//Draw 100 random size, random color circles about the x, y, position, Center of screen in this example.
for (int i = 0; i < 100; i++)
{
drawCircle(120, 160, random(120), random(65535)); // circles at x, y, radius, color.
}
delay(2000);//Delay of 2 Sec.
blink(3, 500); //Blink 5 times with 100mS Delay between.
LCD_Clear(BLACK);//Clear Screen to Black
//Draw 30 random size, random position and random color filled rectangles.
for (int i = 0; i < 30; i++)
{
Rectf(random(120), random(160), random(120), random(160), random(65535)); // Filled Rectangle at x, y, width, hight, color.
}
delay(2000);//Delay of 2 Sec.
blink(3, 500); //Blink 5 times with 100mS Delay between.
LCD_Clear(BLACK);//Clear Screen to Black
//while(true);//Stop Sketch Here if required.
}
//-------------------------------------------------------------------------------------------
//End of Sketch.
Брал вот отсюда https://www.youtube.com/watch?v=Act3Mw42i-Y