#include <EEPROM.h>
int leds[16] = {2,3,4,5,6,7,8,9,10,11,12,13,A0,A1,A2,A3};
#define BTN_PIN A4 // Push button
int speedStep = 1; // 1 = slow, 5 = fast
bool lastBtn = HIGH;
// Fixed delays for speed levels (ms)
int speedDelay[5] = {400, 300, 200, 120, 60};
void setup() {
for (int i = 0; i < 16; i++) pinMode(leds[i], OUTPUT);
pinMode(BTN_PIN, INPUT_PULLUP);
// Load saved speed
speedStep = EEPROM.read(0);
if (speedStep < 1 || speedStep > 5) speedStep = 1;
}
void loop() {
// ---- BUTTON: CHANGE SPEED ----
bool btn = digitalRead(BTN_PIN);
if (btn == LOW && lastBtn == HIGH) {
speedStep++;
if (speedStep > 5) speedStep = 1;
EEPROM.write(0, speedStep); // Save speed
delay(250); // Debounce
}
lastBtn = btn;
// ---- LED RUNNING PATTERN ----
for (int i = 0; i < 16; i++) {
allOff();
digitalWrite(leds[i], HIGH);
delay(speedDelay[speedStep - 1]);
}
}
// ---- TURN ALL LEDS OFF ----
void allOff() {
for (int i = 0; i < 16; i++) digitalWrite(leds[i], LOW);
}