const byte buttonPin = 2; const byte ledPin = LED_BUILTIN; const unsigned long debounceMs = 30; int lastReading = HIGH; int stableState = HIGH; unsigned long changedAt = 0; bool ledState = false; void setup() { pinMode(buttonPin, INPUT_PULLUP); pinMode(ledPin, OUTPUT); digitalWrite(ledPin, LOW); Serial.begin(9600); } void loop() { const int reading = digitalRead(buttonPin); const unsigned long now = millis(); if (reading != lastReading) changedAt = now; if (now - changedAt >= debounceMs && reading != stableState) { stableState = reading; if (stableState == LOW) { ledState = !ledState; digitalWrite(ledPin, ledState ? HIGH : LOW); Serial.println(ledState ? "On" : "Off"); } } lastReading = reading; }