// Pin Definitions for Traffic Lights
// North Direction (Vehicle and Pedestrian)
int NRed = 2;
int NYellow = 3;
int NGreen = 4;
int NPGreen = A0;
int NPRed = A1;
// East Direction (Vehicle and Pedestrian)
int ERed = 5;
int EYellow = 6;
int EGreen = 7;
int EPGreen = A2;
int EPRed = A3;
// South Direction (Vehicle and Pedestrian)
int SRed = 8;
int SYellow = 9;
int SGreen = 10;
// West Direction (Vehicle and Pedestrian)
int WRed = 11;
int WYellow = 12;
int WGreen = 13;
int WPGreen = A4;
int WPRed = A5;
// Timing Variables (in milliseconds)
unsigned long northSouthGreenTime = 30000; // North-South Green Light Duration
unsigned long eastWestGreenTime = 30000; // East-West Green Light Duration
unsigned long yellowTime = 2000; // Yellow Light Duration
void setup()
{
// Set all vehicle and pedestrian traffic light pins as OUTPUT
pinMode(NRed, OUTPUT);
pinMode(NYellow, OUTPUT);
pinMode(NGreen, OUTPUT);
pinMode(NPGreen, OUTPUT);
pinMode(NPRed, OUTPUT);
pinMode(ERed, OUTPUT);
pinMode(EYellow, OUTPUT);
pinMode(EGreen, OUTPUT);
pinMode(EPGreen, OUTPUT);
pinMode(EPRed, OUTPUT);
pinMode(SRed, OUTPUT);
pinMode(SYellow, OUTPUT);
pinMode(SGreen, OUTPUT);
pinMode(WRed, OUTPUT);
pinMode(WYellow, OUTPUT);
pinMode(WGreen, OUTPUT);
pinMode(WPGreen, OUTPUT);
pinMode(WPRed, OUTPUT);
}
void loop() {
// North-South Green Light, East-West Red Light
digitalWrite(NRed, LOW);
digitalWrite(NYellow, LOW);
digitalWrite(NGreen, HIGH);
digitalWrite(SRed, LOW);
digitalWrite(SYellow, LOW);
digitalWrite(SGreen, HIGH);
digitalWrite(ERed, HIGH);
digitalWrite(EYellow, LOW);
digitalWrite(EGreen, LOW);
digitalWrite(WRed, HIGH);
digitalWrite(WYellow, LOW);
digitalWrite(WGreen, LOW);
// Pedestrian lights for North-South (Green for pedestrians to cross)
digitalWrite(NPGreen, HIGH);
digitalWrite(NPRed, LOW);
digitalWrite(EPGreen, LOW);
digitalWrite(EPRed, HIGH);
digitalWrite(WPGreen, LOW);
digitalWrite(WPRed, HIGH);
delay(northSouthGreenTime); // Wait for North-South green time
// North-South Yellow Light, East-West Red Light
digitalWrite(NGreen, LOW);
digitalWrite(NYellow, HIGH);
digitalWrite(SGreen, LOW);
digitalWrite(SYellow, HIGH);
digitalWrite(NPGreen, LOW);
digitalWrite(NPRed, HIGH);
delay(yellowTime); // Wait for yellow light
// East-West Green Light, North-South Red Light
digitalWrite(NRed, HIGH);
digitalWrite(NYellow, LOW);
digitalWrite(SRed, HIGH);
digitalWrite(SYellow, LOW);
digitalWrite(ERed, LOW);
digitalWrite(EYellow, LOW);
digitalWrite(EGreen, HIGH);
digitalWrite(WRed, LOW);
digitalWrite(WYellow, LOW);
digitalWrite(WGreen, HIGH);
// Pedestrian lights for East-West (Green for pedestrians to cross)
digitalWrite(NPGreen, LOW);
digitalWrite(NPRed, HIGH);
digitalWrite(EPGreen, HIGH);
digitalWrite(EPRed, LOW);
digitalWrite(WPGreen, HIGH);
digitalWrite(WPRed, LOW);
delay(eastWestGreenTime); // Wait for East-West green time
// East-West Yellow Light, North-South Red Light
digitalWrite(EGreen, LOW);
digitalWrite(EYellow, HIGH);
digitalWrite(WGreen, LOW);
digitalWrite(WYellow, HIGH);
delay(yellowTime); // Wait for yellow light
// Reset pedestrian lights to red
digitalWrite(EPGreen, LOW);
digitalWrite(EPRed, HIGH);
digitalWrite(WPGreen, LOW);
digitalWrite(WPRed, HIGH);
}