// Define the original Road A and Road B LEDs
#define RED_A 1 // Road A Red LED
#define YELLOW_A 5 // Road A Yellow LED
#define GREEN_A 9 // Road A Green LED
#define RED_B 28 // Road B Red LED
#define YELLOW_B 27 // Road B Yellow LED
#define GREEN_B 26 // Road B Green LED
// Define the new Road C and Road D LEDs
#define RED_C 15 // Road C Red LED
#define YELLOW_C 14 // Road C Yellow LED
#define GREEN_C 13 // Road C Green LED
#define RED_D 18 // Road D Red LED
#define YELLOW_D 19 // Road D Yellow LED
#define GREEN_D 20 // Road D Green LED
void setup() {
// Initialize serial communication
Serial1.begin(115200);
Serial1.println("Traffic Light System Initialized!");
// Set all Road A and Road B LED pins as OUTPUT
pinMode(RED_A, OUTPUT);
pinMode(YELLOW_A, OUTPUT);
pinMode(GREEN_A, OUTPUT);
pinMode(RED_B, OUTPUT);
pinMode(YELLOW_B, OUTPUT);
pinMode(GREEN_B, OUTPUT);
// Set all Road C and Road D LED pins as OUTPUT
pinMode(RED_C, OUTPUT);
pinMode(YELLOW_C, OUTPUT);
pinMode(GREEN_C, OUTPUT);
pinMode(RED_D, OUTPUT);
pinMode(YELLOW_D, OUTPUT);
pinMode(GREEN_D, OUTPUT);
}
void setLights(int roadA_Red, int roadA_Yellow, int roadA_Green, int roadB_Red, int roadB_Yellow, int roadB_Green,
int roadC_Red, int roadC_Yellow, int roadC_Green, int roadD_Red, int roadD_Yellow, int roadD_Green) {
// Control the lights for Road A
digitalWrite(RED_A, roadA_Red);
digitalWrite(YELLOW_A, roadA_Yellow);
digitalWrite(GREEN_A, roadA_Green);
// Control the lights for Road B
digitalWrite(RED_B, roadB_Red);
digitalWrite(YELLOW_B, roadB_Yellow);
digitalWrite(GREEN_B, roadB_Green);
// Control the lights for Road C
digitalWrite(RED_C, roadC_Red);
digitalWrite(YELLOW_C, roadC_Yellow);
digitalWrite(GREEN_C, roadC_Green);
// Control the lights for Road D
digitalWrite(RED_D, roadD_Red);
digitalWrite(YELLOW_D, roadD_Yellow);
digitalWrite(GREEN_D, roadD_Green);
}
void loop() {
// Step 1: Road A and C Green, Road B and D Red
setLights(LOW, LOW, HIGH, HIGH, LOW, LOW, LOW, LOW, HIGH, HIGH, LOW, LOW);
delay(5000); // Keep this state for 5 seconds
// Step 2: Road A and C Yellow, Road B and D Red
setLights(LOW, HIGH, LOW, HIGH, LOW, LOW, LOW, HIGH, LOW, HIGH, LOW, LOW);
delay(2000); // Keep this state for 2 seconds
// Step 3: Road A and C Red, Road B and D Green
setLights(HIGH, LOW, LOW, LOW, LOW, HIGH, HIGH, LOW, LOW, LOW, LOW, HIGH);
delay(5000); // Keep this state for 5 seconds
// Step 4: Road A and C Red, Road B and D Yellow
setLights(HIGH, LOW, LOW, LOW, HIGH, LOW, HIGH, LOW, LOW, LOW, HIGH, LOW);
delay(2000); // Keep this state for 2 seconds
}