Здравствуйте, уважаемые господа. Помогите решить задачу:
есть одно реле, 4 кнопки включения этого реле и 4 кнопки выключения. Кнопки сгруппированы попарно. При нажатии на кнопку реле включается и отключится только при нажатии на определенную кнопку выключения. Нажатия на другие кнопки никакого результата не дает. То же самое и с остальными тремя группами кнопок. Попробовал доработать код на управление реле двумя кнопками тупа добавив еще кнопок, но результат огорчил, реле отключается при нажатии на любую кнопку отключения. Подскажите, куда смотреть…
boolean button1WasUp = true;
boolean button2WasUp = true;
boolean button3WasUp = true;
boolean button4WasUp = true;
boolean button5WasUp = true;
boolean button6WasUp = true;
boolean button7WasUp = true;
boolean button8WasUp = true;
boolean button9WasUp = true;
boolean button10WasUp = true;
boolean button11WasUp = true;
boolean button12WasUp = true;
void setup() {
pinMode(10, OUTPUT);
digitalWrite(10, LOW);
pinMode(2, INPUT_PULLUP);//вкл 1
pinMode(3, INPUT_PULLUP);//выкл 2
pinMode(4, INPUT_PULLUP);//вкл 3
pinMode(5, INPUT_PULLUP);// выкл 4
pinMode(6, INPUT_PULLUP);//вкл 5
pinMode(7, INPUT_PULLUP);//выкл 6
pinMode(8, INPUT_PULLUP);//вкл 7
pinMode(9, INPUT_PULLUP);//выкл 8
pinMode(11, INPUT_PULLUP);
pinMode(12, INPUT_PULLUP);
}
void loop() {
// узнаем, отпущены ли две кнопки сейчас
boolean button1IsUp = digitalRead(2);
boolean button2IsUp = digitalRead(3);
// если кнопка 1 была отпущена и не отпущена
if (button1WasUp && !button1IsUp) {
delay(10);
// повторно считываем сигнал с кнопки 1
button1IsUp = digitalRead(2);
if (!button1IsUp) { digitalWrite(10, LOW); }
}
// если кнопка 2 была отпущена и не отпущена
if (button2WasUp && !button2IsUp) {
delay(10);
// повторно считываем сигнал с кнопки 2
button2IsUp = digitalRead(3);
if (!button2IsUp) { digitalWrite(10, HIGH); }
}
// запоминаем состояние двух кнопок ардуино
button1WasUp = button1IsUp;
button2WasUp = button2IsUp;
// узнаем, отпущены ли две кнопки сейчас
boolean button3IsUp = digitalRead(4);
boolean button4IsUp = digitalRead(5);
// если кнопка 1 была отпущена и не отпущена
if (button3WasUp && !button3IsUp) {
delay(10);
// повторно считываем сигнал с кнопки 1
button3IsUp = digitalRead(4);
if (!button3IsUp) { digitalWrite(10, LOW); }
}
// если кнопка 2 была отпущена и не отпущена
if (button4WasUp && !button4IsUp) {
delay(10);
// повторно считываем сигнал с кнопки 2
button4IsUp = digitalRead(5);
if (!button4IsUp) { digitalWrite(10, HIGH); }
}
// запоминаем состояние двух кнопок ардуино
button3WasUp = button3IsUp;
button4WasUp = button4IsUp;
}