Появились устойчивые и позитивные результаты работы с дисплеем Nextion.
Пока тестировали отправку из контроллера на дисплей. Получение данных с дисплея написано, но пока тестируем.
О результатах - все "летает" (быстрее чем LCD HD44780) и получилось очень, и очень просто.
Ниже фрагмент теста по дисплею.
Испытание проводили на не быстрой MEGA2560 c кучой разных дополнительных задач (lcd.i2c, два mcp23017x.i2c, 74HC595.SPI, DHT22, кнопки, светодиоды, АЦП, PWM и прочее) - должно работать и на других платформах (DUE,ESP,STM32).
На дисплее несколько страниц -выглядит это примерно так.
Редактор Nextion следует использовать только новый = версия 1.61.2.
Библиотеку для Arduino от Nextion вообще не используем (она больше вредна, чем полезна).
Кому эта тема интересна, для начала полезно покопаться в проекте для Nextion - в нем есть пояснение и интуитивно должно быть понятно.
Весь проект ниже.
К нему библиотеки - в проекте используются не все RT_HW_BASE.h, RT_HW_LCD44780, RT_HW_MCP23017,RT_HW_DHTx,RT_HW_NEXT.
Если из проекта убрать лишнее, то для работы с дисплеем требуется только две библиотеки - RT_HW_BASE.h, RT_HW_NEXT.
Необходимые пользовательские блоки есть в проекте, но на всякий случай прикладываю новые ПБ.
------------
В проекте применены следующие общие особенности (и инновации).
1. Теперь можно как внешний параметр можно задавать номер UART(0-9).Номер 9 - это SoftSerial. Если он для используемого контроллера номер задан не корректно, это не будет приводить к ошибкам компиляции.
2. Блоки дисплея основной и вспомогательный могут использоваться в разных местах проекта - связываются они через один внешний параметр, который можно оформить и как контакт.
3. Дисплеем может быть до 8-ми штук, при этом память под них распределяется как-бы динамично - нет дисплея в проекте и памяти он не занимает.
4.Все предыдущие устройства разрабатывались с оглядкой на AV328 - они медленные, памяти мало, неэффективны при работе с 4-байтовыми переменными и т.п. Был разработан целый механизм, который позволял обходить и уменьшить влияние таких проблем. Но работать пользователю было посложнее - периоды задавались в условных тиках, все блоки, относящиеся к устройству рекомендовалось располагать на одной плате - иначе могли быть редкие сбои синхронизации и т.п. Эффект по памяти и быстродействию был, но не значительный.
Теперь мы не будем больше оптимизировать под AVR328 - они будут работать как и раньше. В больших проектах может сказываться нехватка памяти.
Но пользователи наверное осознают, что с 2016г. разработчика AVR больше нет, и соотвественно вроде некому выпустить новую Nano или UNO большей памятью чем сейчас 32к/2к, с большим количеством прерываний и таймеров.
-----
Выложенными промежуточными результатами мы очень довольны - потратили большое кол-во усилий, больше 20-раз точно все переписывалось, но сейчас восторг!
------
Успехов в освоении, тем кому эта тема интересна.