const int redLedPin = 8;
const int yellowLedPin = 9;
const int greenLedPin = 10;
const int buttonPin = 2;
int currentLight = 0;
bool overrideMode = false;
void setup() {
pinMode(redLedPin, OUTPUT);
pinMode(yellowLedPin, OUTPUT);
pinMode(greenLedPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
digitalWrite(redLedPin, HIGH);
digitalWrite(yellowLedPin, LOW);
digitalWrite(greenLedPin, LOW);
}
void loop() {
int buttonState = digitalRead(buttonPin);
if (buttonState == LOW) {
delay(50);
if (digitalRead(buttonPin) == LOW) {
overrideMode = !overrideMode;
delay(500);
}
}
if (!overrideMode) {
switch (currentLight) {
case 0:
digitalWrite(redLedPin, HIGH);
digitalWrite(yellowLedPin, LOW);
digitalWrite(greenLedPin, LOW);
delay(5000);
currentLight = 1;
break;
case 1:
digitalWrite(redLedPin, LOW);
digitalWrite(yellowLedPin, HIGH);
digitalWrite(greenLedPin, LOW);
delay(2000);
currentLight = 2;
break;
case 2:
digitalWrite(redLedPin, LOW);
digitalWrite(yellowLedPin, LOW);
digitalWrite(greenLedPin, HIGH);
delay(5000); // Green light duration
currentLight = 0;
break;
}
} else {
if (buttonState == LOW) {
delay(50);
if (digitalRead(buttonPin) == LOW) {
switch (currentLight) {
case 0:
digitalWrite(redLedPin, LOW);
digitalWrite(yellowLedPin, HIGH);
digitalWrite(greenLedPin, LOW);
currentLight = 1;
break;
case 1:
digitalWrite(redLedPin, LOW);
digitalWrite(yellowLedPin, LOW);
digitalWrite(greenLedPin, HIGH);
currentLight = 2;
break;
case 2:
digitalWrite(redLedPin, HIGH);
digitalWrite(yellowLedPin, LOW);
digitalWrite(greenLedPin, LOW);
currentLight = 0;
break;
}
delay(500);
}
}
}
}