Поскольку на форуме регулярно встречаются у людей проблемы с таймингом (механические таймеры "не надежные, недостаточно настроек, дорогие, нестабильно работают и т.д."), расскажу на пальцах, как человеку, совсем не связанному с техникой и программированием, сделать двухканальный таймер с неограниченным количеством настроек.
Покупаем Ардуино Нано, двухканальное реле и десяток монтажных проводков (мама-мама), цена за все 4-5$:
Ардуину лучше взять с уже распаянной гребенкой (штырьками), чтоб потом не паять.
Подключаем Нану к компьютеру (у неё как правило разъем mini-USB), скачиваем и устанавливаем
драйвер, устанавливаем
Arduino IDE.
Запустив Arduino IDE, идем в Инструменты>Плата, выбираем там Ардуино Нано. Копируем туда скетч
int pin1 =
5; //номер пина, куда подключено первое реле таймера 1
unsigned long freq=
60; //периодичность включения в минутах таймера 1
unsigned long dlit=
5; //длительность работы в минутах таймера 1
unsigned long freq_last_time;
int pin2 =
6; //номер пина, куда подключено первое реле таймера 2
unsigned long freq2=
60; //периодичность включения в минутах таймера 2
unsigned long dlit2=
5; //длительность работы в минутах таймера 2
unsigned long freq_last_time2;
void setup(void){
pinMode(pin1 , OUTPUT);
pinMode(pin2 , OUTPUT);
digitalWrite(pin1 , HIGH);
digitalWrite(pin2 , HIGH);
}
void loop(void){
Rele();
Rele2();
}
void Rele(){
if( (millis()-freq_last_time)>(freq*60000) ){
digitalWrite(pin1 , HIGH);
freq_last_time=millis();
}
if( (millis()-freq_last_time)>(dlit*60000) ){
digitalWrite(pin1 , LOW);
}
}
void Rele2(){
if( (millis()-freq_last_time2)>(freq2*60000)){
digitalWrite(pin2 , HIGH);
freq_last_time2=millis();
}
if( (millis()-freq_last_time2)>(dlit2*60000)){
digitalWrite(pin2 , LOW);
}
}
И нажимаем кнопку со стрелочкой (при первой заливке оно предложит сохранить - сохраняем.)
Все, ардуина готова. Теперь проводками соединяем питание реле с пинами питания ардуины (плюс к плюсу, может называться +5v или Vcc, минус к минусу GND). А средние проводки к указанным выше пинам (на ардуине цифровые пины имеют пометку D, т.е. к D5 и D6), выделенным красным (можно их поменять)
Устройство готово. Запитываем Ардуину зарядкой от мобилки, подключаем реле в разрыв проводов наших устройств, наслаждаемся.
Пример.
Нам нужно включать свет на 12 часов в 8 утра (свет на реле 1), кроме того нам нужно включать помпу каждые два часа на 5 минут (помпа на реле 2).
Тогда верхняя часть программы будет выглядеть так (меняем только то, что выделено красным)
int pin1 =
5;
unsigned long freq=
1440; // Периодичность цикла 1 сутки, следовательно ставим 1440 минут
unsigned long dlit=
720; //длительность работы 12 часов, т.е. 720 минут
unsigned long freq_last_time;
int pin2 =
6;
unsigned long freq2=
120; //периодичность цикла 2 часа, или 120 минут
unsigned long dlit2=
5; //длительность работы 5 минут
unsigned long freq_last_time2;
В 8 утра выключаем и включаем ардуину (рестартуем её), это нужно чтобы суточный цикл начал отсчитываться с 8 утра (поскольку ардуина работает у нас без модуля часов реального времени на внутренем таймере). Все, работа началась. Раз в месяц желательно рестартовать ардуину (это связано с ограничем емкости внутреннего таймера 50 суток)