const uint8_t LED_CNT = 5; const uint8_t LED_PINS[LED_CNT] = {8, 9, 10, 11, 12}; const uint8_t BUTTON_PIN = 7; const uint32_t INTERVAL = 1000; uint32_t ms; uint32_t last_ms; uint32_t timeout; bool run; bool button; bool button_old; uint8_t actual_led; void update_timeout(void) { uint32_t diff_ms; ms = millis(); diff_ms = (ms - last_ms); last_ms = ms; if (diff_ms > timeout) timeout = 0; else timeout -= diff_ms; } void setup() { pinMode(BUTTON_PIN, INPUT_PULLUP); pinMode(LED_PINS[0], OUTPUT); pinMode(LED_PINS[1], OUTPUT); pinMode(LED_PINS[2], OUTPUT); pinMode(LED_PINS[3], OUTPUT); pinMode(LED_PINS[4], OUTPUT); button = digitalRead(BUTTON_PIN); button_old = button; } void loop() { uint8_t i; update_timeout(); button = digitalRead(BUTTON_PIN); if (!button && button_old) { if (run) { for (i=0; i