//Тут указываем какие контакты будут входами, а какие выходами
#define out1 15 //Указаны для примера выходы
#define out2 2 //Указаны для примера выходы
#define out3 4 //Указаны для примера выходы
#define out4 5 //Указаны для примера выходы
#define in1 13 //Указаны для примера входы
#define in2 12 //Указаны для примера входы
#define in3 14 //Указаны для примера входы
#define in4 27 //Указаны для примера входы
void setup() {
//Тут определяем в каком режиме будут работать контакты
pinMode(in1, INPUT_PULLUP); //Данный вход работает в режиме подтяжки к внутреннему резистору, по умолчанию 0 это вкл, 1 выкл, инвертированная логика.
pinMode(in2, INPUT_PULLUP); //Данный вход работает в режиме подтяжки к внутреннему резистору, по умолчанию 0 это вкл, 1 выкл, инвертированная логика.
pinMode(in3, INPUT_PULLUP); //Данный вход работает в режиме подтяжки к внутреннему резистору, по умолчанию 0 это вкл, 1 выкл, инвертированная логика.
pinMode(in4, INPUT_PULLUP); //Данный вход работает в режиме подтяжки к внутреннему резистору, по умолчанию 0 это вкл, 1 выкл, инвертированная логика.
pinMode(out1, OUTPUT); //определяем выход
pinMode(out2, OUTPUT); //определяем выход
pinMode(out3, OUTPUT); //определяем выход
pinMode(out4, OUTPUT); //определяем выход
digitalWrite(out1, LOW);
digitalWrite(out2, LOW);
digitalWrite(out3, LOW);
digitalWrite(out4, LOW);
Serial.begin(115200);
Serial.println("Hello, ESP32!");
}
void loop() {
bool b_in1 = digitalRead(in1);
bool b_in2 = digitalRead(in2);
bool b_in3 = digitalRead(in3);
bool b_in4 = digitalRead(in4);
if(b_in1){
b_in1 = false;
}
else{
b_in1 = true;
}
if(b_in2){
b_in2 = false;
}
else{
b_in2 = true;
}
if(b_in3){
b_in3 = false;
}
else{
b_in3 = true;
}
if(b_in4){
b_in4 = false;
}
else{
b_in4 = true;
}
if((b_in1==false)&&(b_in2==false)&&(b_in3==false)&&(b_in4==false)){
b_in1 = true;
b_in2 = true;
b_in3 = true;
b_in4 = true;
}
digitalWrite(out1, b_in1);
digitalWrite(out2, b_in2);
digitalWrite(out3, b_in3);
digitalWrite(out4, b_in4);
/*
//Проверяем состояние первого входа
if (digitalRead(in1)==LOW){
digitalWrite(out1, LOW); //Если первый вход подтянутк в земле включаем выход
}
else {
digitalWrite(out1, HIGH); //Если первый вход не поднятнут, т.е. не нажат выключаем
}
//Проверяем состояние второго входа
if (digitalRead(in2)==LOW){
digitalWrite(out2, LOW);
}
else {
digitalWrite(out2, HIGH);
}
//Проверяем состояние третьего входа
if (digitalRead(in3)==LOW){
digitalWrite(out3, LOW);
}
else {
digitalWrite(out3, HIGH);
}
//Проверяем состояние четвертого входа
if (digitalRead(in4)==LOW){
digitalWrite(out4, LOW);
}
else {
digitalWrite(out4, HIGH);
}
*/
delay(500); //чтобы не частить и не мучать реле вечными передергиваниями, можно до 1000 увеличить
}