const int ledPins[] = {33, 25, 26, 27, 14, 12, 13};
const int numLEDs = sizeof(ledPins) / sizeof(ledPins[0]);
const int buttonPin = 32;
unsigned long ledInterval = 8571/2; // 60s / 7 LEDs
unsigned long blinkInterval = 100; // Blink every 100 ms
int currentLED = 0;
bool blinking = false;
bool timerRunning = false;
unsigned long lastChangeTime = 0;
unsigned long lastBlinkTime = 0;
bool ledBlinkState = false;
void setup() {
Serial.begin(115200);
for (int i = 0; i < numLEDs; i++) {
pinMode(ledPins[i], OUTPUT);
digitalWrite(ledPins[i], LOW);
}
pinMode(buttonPin, INPUT);
}
void loop() {
// Check button press to start/restart
if (digitalRead(buttonPin) == HIGH) {
startTimer();
}
// Turn off one LED every ledInterval
if (timerRunning && millis() - lastChangeTime == ledInterval) {
if (currentLED < numLEDs) {
digitalWrite(ledPins[currentLED], LOW); // Turn off current LED
currentLED++;
lastChangeTime = millis();
}
if (currentLED >= numLEDs) {
timerRunning = false;
blinking = true;
lastBlinkTime = millis();
}
}
// Handle blinking after all LEDs are off
if (blinking && millis() - lastBlinkTime >= blinkInterval) {
ledBlinkState = !ledBlinkState;
for (int i = 0; i < numLEDs; i++) {
digitalWrite(ledPins[i], ledBlinkState ? HIGH : LOW);
}
lastBlinkTime = millis();
}
}
void startTimer() {
blinking = false;
timerRunning = true;
currentLED = 0;
lastChangeTime = millis();
// Turn all LEDs ON
for (int i = 0; i < numLEDs; i++) {
digitalWrite(ledPins[i], HIGH);
}
}