const byte BUTTON_PIN = 2; const byte STAR_PIN = 6; const unsigned long DEBOUNCE_MS = 25; bool rawLast = HIGH; bool stable = HIGH; bool starOn = false; unsigned long changedAt = 0; unsigned long reportedAt = 0; void setup() { pinMode(BUTTON_PIN, INPUT_PULLUP); pinMode(STAR_PIN, OUTPUT); Serial.begin(9600); } void loop() { unsigned long now = millis(); bool raw = digitalRead(BUTTON_PIN); if (raw != rawLast) { rawLast = raw; changedAt = now; } if (now - changedAt >= DEBOUNCE_MS && raw != stable) { stable = raw; if (stable == LOW) starOn = !starOn; } digitalWrite(STAR_PIN, starOn ? HIGH : LOW); if (now - reportedAt >= 50) { reportedAt = now; Serial.print("button:"); Serial.print(stable == LOW ? 1 : 0); Serial.print(",star:"); Serial.println(starOn ? 1 : 0); } }