int buttonPin = 2;
int buttonState;
int lastButtonState = HIGH;
int systemOn = 0;
unsigned long previousMillis = 0;
int currentLed = 13;
void setup() {
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
}
void loop() {
buttonState = digitalRead(buttonPin);
// Toggle ON/OFF on button press
if (buttonState == LOW && lastButtonState == HIGH) {
systemOn = !systemOn;
delay(200); // debounce
}
lastButtonState = buttonState;
// If OFF → immediately turn everything OFF
if (systemOn == 0) {
digitalWrite(13, LOW);
digitalWrite(12, LOW);
digitalWrite(11, LOW);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
return; // stop execution here
}
// Non-blocking LED sequence
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= 2000) {
previousMillis = currentMillis;
// Turn all OFF first
digitalWrite(13, LOW);
digitalWrite(12, LOW);
digitalWrite(11, LOW);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
// Turn current LED ON
digitalWrite(currentLed, HIGH);
// Move to next LED
if (currentLed == 13) currentLed = 12;
else if (currentLed == 12) currentLed = 11;
else if (currentLed == 11) currentLed = 10;
else if (currentLed == 10) currentLed = 9;
else currentLed = 13;
}
}