#define rele_pin 2
#define button_pin 3
bool flag = false;
bool flag_state = false;
uint32_t btnTimer = 0;
void setup() {
Serial.begin(9600);
pinMode(button_pin, INPUT_PULLUP);
pinMode(rele_pin, OUTPUT);
}
void loop() {
// читаем инвертированное значение для удобства
bool btnState = !digitalRead(button_pin);
if (btnState && !flag && millis() - btnTimer > 100) {
flag = true;
flag_state = !flag_state;
btnTimer = millis();
// Serial.println(String("flag_state=") + flag_state);
// digitalWrite(13, 1);
}
if (!btnState && flag && millis() - btnTimer > 100) {
flag = false;
btnTimer = millis();
}
digitalWrite(rele_pin, flag_state);
}