До хантера далековато. Время включения выходов не регулируется. Нет очереди включения зон ("входов") с тем, чтобы гарантировать включение только одного выхода. Нет % регулировки длительности включения всех входов. Нет обработки датчиков (дождя, ветра и прочего семейства хантеровских нормально замкнутых датчиков *Click). Но впрочем задача Сергея в этом и не состояла.
Просто я занимаюсь автополивом. Но сейчас не сезон и я неспешно курю ПР200 на предмет применения в качестве контроллера системы антиобледенения для одного объекта. Проблема на объекте в том, что мощностей дают мало, а требуется ее много. И необходимо по таймеру включать разные контуры греющего кабеля не более N штук за раз.
(Между прочим, включение нескольких зон одновременно - фишка только продвинутых контроллеров полива для коммерческого использования.)
Наткнулся еще на первые примеры Сергея. Начал над ними работать. И пришел примерно к тому, что Сергей показал в последнем примере. Т.е. главный суточный таймер "пинает" таймеры задержки выключения. При этой схеме можно уйти от не совсем красивой переменной последнего включения.
Ну и применил схему уставки не как принято у "автоматчиков" - время суток включения+время суток выключения, а так как обычно это реализовано в контроллерах полива - время суток включения+длительность включения.
При этом в один UInt32 запихал следующие переменные:
1) 11 бит - минуты суток включения;
2) 7 бит - маска дней недели;
3) 10 бит длительность включения (максимум 1023 минут);
4) 4 бита - номер выхода, который надо включить (4 бита дают 16 шт., естественно).
Тратить один бит на признак вкл/выкл - роскошь. Можно применить время суток включения более 24 часов. Либо длительность установить в ноль.