- Обработку концевика и переключение режимов.
- В обработке режимов ифы заменил на свитч. Так код получается компактнее.
Код: Выделить всё
int regim=1;
int flag=0;
void setup()
{
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
}
void loop()
{
//---------------- Обработка концевика --------------------------------
if (digitalRead(15) == HIGH && flag == 0) // если концевик сработал
{
if (regim == 2) regim = 3;
if (regim == 4) regim = 1;
}
//---------------- Обработка нажатий кнопки --------------------------------
if (digitalRead(14) == HIGH && flag == 0) // если кнопка нажата
// и перемення flag равна 0, то ...
{
// Делаем задержку от дребезга
delay(10);
regim++;
flag=1;
// это нужно для того что бы с каждым нажатием кнопки
// происходило только одно действие
if (regim > 4) //ограничим количество режимов
{
regim = 1; // так как мы используем только одну кнопку,
// то переключать режимы будем циклично
}
}
if (digitalRead(14) == LOW && flag == 1) // если кнопка НЕ нажата
// и переменная flag равна - 1, то ...
{
// Делаем задержку от дребезга
delay(10);
flag=0; //обнуляем переменную "knopka"
}
//------------------------------ Обработка режимов --------------------------------
switch (regim)
{
case 1:
digitalWrite(9, LOW); // выключаем все реле
digitalWrite(10, LOW);
break;
case 2:
digitalWrite(10, HIGH); // включае реле "открыть"
digitalWrite(9, LOW);
break;
case 3:
digitalWrite(9, LOW); // выключаем все реле
digitalWrite(10, LOW);
break;
case 4:
digitalWrite(9, HIGH); // включаем реле "закрыть"
digitalWrite(10, LOW);
break;
}
}