tolochko писал(а): ↑25.05.2020{, 21:16}
Вариант прикрепил может можно и по другому сделать
По проекту:
1.Обратили наверное внимание, что у Вас каждые 5 сек моргает экран? В блоке lcd.i2c параметр перезагрузки lcd в тиках - по умолчанию 100. Его можно увеличить до 32000, что будет соответствовать 1600 сек, или примерно 27 мин. Если это опция не нужна, то параметр нужно установить =0;
2. У Вас на все входы EN подан один и тот же сигнал L3. Насколько я понимаю у Вас не стоит задача переключать разные изображения в одних и тех же полях. Если так, то на на вход можно подать просто true или еще проще - просто проинвертировать.
3. У Вас на все входы blink подано false - этого делать не обязательно, там 0 по умолчанию, если нет параметра (эту опцию реализует FLProg).
4. По смыслу Вы вроде бы могли бы обойтись и упрощенными блоками - у них нет входов EN и blink.
Проект бы смотрелся попроще.
5. Рекомендую вставлять моргающую звездочку - я добавил в проект в позицию 20,1 - экран как-бы оживает.
6.Еще добавил опцию для контроля на пине 8 цикла loop() логическим анализатором. Периодичность у Вас 145 mcs, но можно сделать и пошустрее...
7. Я бы рекомендовал разнести проект по платам и использовать диспетчер задач. По мере увеличения проекта это станет актуальным.
В этом случае LCD правильнее было бы выделить в отдельную плату как "свободную" задачу, энкодер и выбор параметров в другую ( в свободную или оперативную). Связь параметров между платами удобно реализовывать через контакты.
------
Программу грузил в Nano, но энкодер не подключал (мы с ними почти не работаем).
В измененном проекте изменен адрес lcd - тот, который у нас на стенде был подключен.
-----
Успехов.
Отправлено спустя 4 минуты 15 секунд:
Префикс меняется, может суффикс имеете ввиду? Префикс выводится указанный в параметрах пользователя до первого символа ~.
Суффикс выводится - любой символ кроме ~ .
Если длина поля не позволяет, в начале обрезается суффикс, потом значение справа, затем заголовок справа.
Если я неверно понял проблему - уточните.