Таймер периодического включения нагрузки
- Войдите на сайт для отправки комментариев
Вс, 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? Прошу сильно не пинать. Это мои первые шаги .