const int redPin = 32;
const int yellowPin = 25;
const int greenPin = 14;
const int switchPin = 13;
bool sequenceStarted = false;
void setup() {
Serial.begin(115200);
pinMode(redPin, OUTPUT);
pinMode(yellowPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(switchPin, INPUT_PULLUP); // Using internal pull-up resistor
// Ensure all LEDs are off initially
digitalWrite(redPin, LOW);
digitalWrite(yellowPin, LOW);
digitalWrite(greenPin, LOW);
}
void loop() {
// Check if the switch is pressed to start the sequence
if (digitalRead(switchPin) == HIGH) { // Inverted logic
if (!sequenceStarted) {
sequenceStarted = true;
}
} else {
// Optionally, you can reset the sequenceStarted if the switch is not pressed
sequenceStarted = false;
// Ensure all LEDs are off if the switch is not pressed
digitalWrite(redPin, LOW);
digitalWrite(yellowPin, LOW);
digitalWrite(greenPin, LOW);
}
if (sequenceStarted) {
// Turn on LEDs in order: Red -> Yellow -> Green
digitalWrite(redPin, HIGH);
delay(1000);
digitalWrite(redPin, LOW);
digitalWrite(yellowPin, HIGH);
delay(1000);
digitalWrite(yellowPin, LOW);
digitalWrite(greenPin, HIGH);
delay(1000);
digitalWrite(greenPin, LOW);
// Turn on LEDs in reverse order: Green -> Yellow -> Red
digitalWrite(greenPin, HIGH);
delay(1000);
digitalWrite(greenPin, LOW);
digitalWrite(yellowPin, HIGH);
delay(1000);
digitalWrite(yellowPin, LOW);
digitalWrite(redPin, HIGH);
delay(1000);
digitalWrite(redPin, LOW);
// Small delay before starting the sequence again
delay(500); // Optional, for a pause between sequences
}
}