#define BUTTON_PIN 8 #define LED_PIN 9 #define ON_TIME_MS 3000 unsigned long lastOnTime = 0; void setup() { pinMode(BUTTON_PIN, INPUT); pinMode(LED_PIN, OUTPUT); } void loop() { unsigned long now = millis(); if (digitalRead(BUTTON_PIN) == HIGH) { digitalWrite(LED_PIN, HIGH); lastOnTime = now; } if ((lastOnTime + ON_TIME_MS) < now) { // !!! overflow digitalWrite(LED_PIN, LOW); } }