#define RED_LED 2
#define YELLOW_LED 4
#define GREEN_LED 5
// Traffic light phase durations (milliseconds)
#define GREEN_TIME 4000 // 4 seconds green
#define YELLOW_TIME 1500 // 1.5 seconds yellow (caution)
#define RED_TIME 4000 // 4 seconds red
// Helper: turn all LEDs off
void allOff() {
digitalWrite(RED_LED, LOW);
digitalWrite(YELLOW_LED, LOW);
digitalWrite(GREEN_LED, LOW);
}
void setup() {
Serial.begin(115200);
// Configure all three pins as outputs
pinMode(RED_LED, OUTPUT);
pinMode(YELLOW_LED, OUTPUT);
pinMode(GREEN_LED, OUTPUT);
allOff(); // Start with all LEDs off
Serial.println("Traffic Light simulation started.");
Serial.println("Simulating: Model Town Rd, Lahore");
}
void loop() {
// --- PHASE 1: GREEN (vehicles may proceed) ---
allOff();
digitalWrite(GREEN_LED, HIGH);
Serial.printf("GREEN ON — go! (%d ms)\n", GREEN_TIME);
delay(GREEN_TIME);
// --- PHASE 2: YELLOW (prepare to stop) ---
allOff();
digitalWrite(YELLOW_LED, HIGH);
Serial.printf("YELLOW ON — slow down! (%d ms)\n", YELLOW_TIME);
delay(YELLOW_TIME);
// --- PHASE 3: RED (stop) ---
allOff();
digitalWrite(RED_LED, HIGH);
Serial.printf("RED ON — stop! (%d ms)\n", RED_TIME);
delay(RED_TIME);
}