volatile unsigned long DebounceTimer;
volatile int ButtonPressed;
volatile unsigned int delayTime = 200;
#define pin 12
bool a1 = false;
void setup() {
pinMode(pin, INPUT_PULLUP);
Serial.begin(115200);
attachInterrupt(digitalPinToInterrupt(pin), [] {if (ButtonPressed += (millis() - DebounceTimer) >= (delayTime )) DebounceTimer = millis();}, CHANGE);
//attachInterrupt(digitalPinToInterrupt(pin), []{ButtonPressed++;}, RISING); // No Debounce
}
void loop() {
if (ButtonPressed> 0) {ButtonPressed = 0; a1 = digitalRead(pin); // Must clear}
if (a1 == true) {Serial.println(F("ЗАКРЫТО"));}
else {Serial.println(F("ОТКРЫТО"));}
}
}