Мій дошліфований варіант скетчу. На основі скетчу MIHS і мого попереднього варіанту.
Переробив управління LED, світанок/захід. Переніс його в посекундний цикл для плавності. А то були помітні стрибки.
Ще з попереднього варіанту в меню настройки часу додав меню коррекції ходу годинника. Коррекція раз на добу, 30 хвилин після півночі. І скрінсейвер.
Прямий вхід в меню Настройки кнопкою Enter.
Прямий вхід в настройку яскравості LED кнопкою Вгору, Enter з цього меню фіксує виставлене значення, Esc виключає LED.
Кнопки Вниз і Esc - як і було, вхід в меню.
І основне: використавши ідею автора реалізував відновлення після виключення/включення чи сбросу. В Setup прокручується весь розклад, і якщо час менше ніж тепер, запам'ятовується стан кожного каналу вкл. або викл. Після циклу відповідно включаються, які "виловились".
Цикл читання розкладу виніс в окрему функцію, яку визиваю на старті або в основному циклі з різними параметрами.
Один недолік - записи в розкладі повинні бути в хронологічному порядку, інакше - який останній, той і спрацює. (Це тільки в Setup). І ще на старті читаються тільки сьогоднішні записи, у мене всі дні тижня в розкладі включені, тому не заморочувався.
Ага, ще переробив управління УДО. Позбавився delay, в розкладі задаю кількість секунд включення каналу, а в посекундному циклі перевіряю чи більше нуля, включаю якщо так і віднімаю секунду. І так до нуля, тоді виключаю. Тривалість буде до 252 секунди. Якщо треба більше, то треба збільшувати розрядність змінних. Я сам УДО не використовую, так, зачепив заодно
Ще одне: У мене на двох різних Ардуїнах чомусь не включється A6. Тому перееніс PS_ON на A5.
aqua_controll-my2.0.zip
Апдейт:
https://www.aquaforum.ua/showpost.ph...postcount=1232 - Виправив одну помилку і додав секунди на головний екран.
Виправлений скетч
aqua_controll-my2.1.zip