Здравствуйте, нужна помощь. Нужно подружить ардуину, кнопки и реле.
Имеется код:
#include <Bounce2.h>
byte buttonOneState = 0;
byte buttonTwoState = 0;
const byte buttonPin1 = 2;
const byte buttonPin2 = 3;
const byte relayPin1 = 9; //Relay pin 1
const byte relayPin2 = 10; //Relay pin 2
const byte debouncerInterval = 50;
// Instantiate ONE OR MORE Bounce2 object(s).
Bounce debouncer = Bounce();
Bounce debouncer2 = Bounce();
void setup() {
Serial.begin(9600);
pinMode(buttonPin1, INPUT_PULLUP);
pinMode(buttonPin2, INPUT_PULLUP);
debouncer.attach(buttonPin1);
debouncer.interval(debouncerInterval);
debouncer2.attach(buttonPin2);
debouncer2.interval(debouncerInterval);
pinMode(relayPin1, OUTPUT); //Define pin as output
pinMode(relayPin2, OUTPUT); //Define pin as output
}
void loop() {
// Button 1
if (debouncer.update()) {
if (debouncer.read() == 0) {
if (buttonOneState == 0) {
Serial.println("Turn Relay 1 ON");
digitalWrite(relayPin1, HIGH);
buttonOneState = 1;
}
else {
Serial.println("Turn Relay 1 OFF");
digitalWrite(relayPin1, LOW);
buttonOneState = 0;
}
}
}
// Button 2
if (debouncer2.update()) {
if (debouncer2.read() == 0) {
if (buttonTwoState == 0) {
Serial.println("Turn Relay 2 ON");
digitalWrite(relayPin2, HIGH);
buttonTwoState = 1;
}
else {
Serial.println("Turn Relay 2 OFF");
digitalWrite(relayPin2, LOW);
buttonTwoState = 0;
}
}
}
}
1 кнопка отвечает за 1 реле, 2 кнопка отвечает за 2 реле.
Мне нужно сделать так, чтобы:
1 кнопка включает 1 реле, а выключить его можно только 2 кнопкой; и наоборот: 2 кнопка включает 2 реле, а выключить его можно только 1 кнопкой и т. д. — некий проходной выключатель… но если 1 кнопку нажать 2 раза, то выключить 1 реле можно только после 2-х нажатий 2 кнопки…