const int led1 = 3;
const int led2 = 4;
const int led3 = 5;
const int buttonPin = 9;
bool isRunning = false;
bool lastButtonState = HIGH;
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;
unsigned long previousMillis = 0;
const unsigned long interval = 1000;
int currentLED = 0;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
}
void loop() {
unsigned long currentMillis = millis();
bool buttonState = digitalRead(buttonPin);
if (buttonState == LOW && lastButtonState == HIGH && (currentMillis - lastDebounceTime) > debounceDelay) {
isRunning = !isRunning;
lastDebounceTime = currentMillis;
}
lastButtonState = buttonState;
if (isRunning && (currentMillis - previousMillis >= interval)) {
previousMillis = currentMillis;
updateLEDs();
}
}
void updateLEDs() {
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
if (currentLED == 0) digitalWrite(led1, HIGH);
else if (currentLED == 1) digitalWrite(led2, HIGH);
else if (currentLED == 2) digitalWrite(led3, HIGH);
currentLED = (currentLED + 1) % 3;
}