Таймер периодического включения нагрузки
- Войдите на сайт для отправки комментариев
Вс, 17/03/2013 - 12:41
Попробывал создать код для управления клапаном.Пока не нажата кнопка -клапан закрыт. При нажатии и удержании кнопки клапан должен оставаться закрытым какое-то время(3 сек в примере)и открыватьсяна 1 сек. И так пока нажата кнопка.Решил обойтись без Delay.Попробывал переделать коды из разных примеров и вот что у меня получилось:
/* если кнопка нажата - клапан закрыт 3 сек,открывается на 1 сек *и так пока нажата кнопка. *если отпустить кнопку-клапан остается закрытым */ long previousMillis = 0; int val=0; //переменная времени когда клапан закрыт void setup() { pinMode(6, OUTPUT); //выход на клапан } void loop() { if(digitalRead(1)==HIGH)//если кнопка нажата ... { if (millis() -previousMillis >1000) //время когда клапан включен { previousMillis = millis(); val++;// digitalWrite(6,LOW); } } else //если убрать этот блок то нажатия на кнопку не сбрасывают время когда клапан выключен { // и если кнопка окажется нажатой во время val>=3, клапан откроется на время открытия(пока нажата кнопка) val=0; //обнуляем переменную } if(val>=3) //время когда клапан выключен { digitalWrite(6,HIGH); val=0;//обнуляем переменную } if(digitalRead(1)==LOW)//если кнопка не нажата ... { digitalWrite(6,LOW); //выключаем клапан } }
код работает как мне и надо.Но может можно это сделать как-то попроще?Можно ли это сделать с SimpleTimer? Прошу сильно не пинать. Это мои первые шаги .