// Define pin numbers for each traffic light color
int G1 = 13; // Green light for intersection 1
int Y1 = 12; // Yellow light for intersection 1
int R1 = 14; // Red light for intersection 1
int G2 = 27; // Green light for intersection 2
int Y2 = 26; // Yellow light for intersection 2
int R2 = 25; // Red light for intersection 2
int G3 = 33; // Green light for intersection 3
int Y3 = 32; // Yellow light for intersection 3
int R3 = 23; // Red light for intersection 3
int G4 = 5; // Green light for intersection 4
int Y4 = 19; // Yellow light for intersection 4
int R4 = 18; // Red light for intersection 4
void setup() {
// Initialize all pins as OUTPUT
pinMode(G1, OUTPUT);
pinMode(Y1, OUTPUT);
pinMode(R1, OUTPUT);
pinMode(G2, OUTPUT);
pinMode(Y2, OUTPUT);
pinMode(R2, OUTPUT);
pinMode(G3, OUTPUT);
pinMode(Y3, OUTPUT);
pinMode(R3, OUTPUT);
pinMode(G4, OUTPUT);
pinMode(Y4, OUTPUT);
pinMode(R4, OUTPUT);
// Initially turn on all red lights and delay for 4 seconds
digitalWrite(R1, HIGH);
digitalWrite(R2, HIGH);
digitalWrite(R3, HIGH);
digitalWrite(R4, HIGH);
delay(4000);
// Turn on yellow light for intersection 1 and delay for 2 seconds
digitalWrite(Y1, HIGH);
delay(2000);
}
void loop() {
// Intersection 4: Green for 5 seconds, blink Green every 500ms
digitalWrite(Y4, LOW);
digitalWrite(R4, HIGH);
digitalWrite(R1, LOW);
digitalWrite(G1, HIGH);
digitalWrite(Y1, LOW);
delay(5000);
blinkLight(G1, 500);
// Intersection 1: Switch from green to yellow
digitalWrite(Y1, HIGH);
digitalWrite(G1, LOW);
delay(2000);
// Intersection 1: Red light and Intersection 2: Green light
digitalWrite(R1, HIGH);
digitalWrite(Y1, LOW);
delay(2000);
digitalWrite(Y2, HIGH);
delay(2000);
digitalWrite(R2, LOW);
digitalWrite(G2, HIGH);
digitalWrite(Y2, LOW);
delay(5000);
blinkLight(G2, 500);
// Intersection 2: Switch from green to yellow
digitalWrite(G2, LOW);
digitalWrite(Y2, HIGH);
delay(2000);
digitalWrite(R2, HIGH);
digitalWrite(Y2, LOW);
delay(2000);
// Intersection 2: Red light and Intersection 3: Green light
digitalWrite(Y3, HIGH);
delay(2000);
digitalWrite(R3, LOW);
digitalWrite(G3, HIGH);
digitalWrite(Y3, LOW);
delay(5000);
blinkLight(G3, 500);
// Intersection 3: Switch from green to yellow
digitalWrite(G3, LOW);
digitalWrite(Y3, HIGH);
delay(2000);
digitalWrite(R3, HIGH);
digitalWrite(Y3, LOW);
delay(2000);
// Intersection 3: Red light and Intersection 4: Green light
digitalWrite(Y4, HIGH);
delay(2000);
digitalWrite(R4, LOW);
digitalWrite(G4, HIGH);
digitalWrite(Y4, LOW);
delay(5000);
blinkLight(G4, 500);
// Intersection 4: Switch from green to yellow
digitalWrite(G4, LOW);
digitalWrite(Y4, HIGH);
delay(2000);
digitalWrite(R4, HIGH);
digitalWrite(Y4, LOW);
delay(2000);
// Intersection 4: Red light and Intersection 1: Green light
digitalWrite(Y1, HIGH);
delay(2000);
digitalWrite(R1, LOW);
digitalWrite(G1, HIGH);
digitalWrite(Y1, LOW);
delay(2000);
}
// Function to blink a light with a specified delay
void blinkLight(int pin, int delayTime) {
for (int i = 0; i < 6; i++) { // Blink the light 6 times
digitalWrite(pin, HIGH);
delay(delayTime);
digitalWrite(pin, LOW);
delay(delayTime);
}
}