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);
}
}
Shared from Little Bird Electronics curriculum.