/**"Hi, this is ankush and this is a mini project
which demonstrate the working of traffic light,
4 Way Intersection with 2 Phase Traffic Light Signals of a crossROAD **/
#define phase_1_green 33
#define phase_1_yellow 32
#define phase_1_red 25
#define phase_2_green 17
#define phase_2_yellow 5
#define phase_2_red 18
int cycletime = 11; // Cycle time in seconds
int yellow = 2; // Yellow light duration in seconds
float greenratio = 0.5;
int greentot, greenphase1, greenphase2;
void setup() {
delay(5000); // Delay for 5 seconds to allow time for boot log to be processed
pinMode(phase_1_green, OUTPUT);
pinMode(phase_1_yellow, OUTPUT);
pinMode(phase_1_red, OUTPUT);
pinMode(phase_2_green, OUTPUT);
pinMode(phase_2_yellow, OUTPUT);
pinMode(phase_2_red, OUTPUT);
cycletime *= 1000; // Convert cycle time to milliseconds
yellow *= 1000; // Convert yellow light duration to milliseconds
greentot = cycletime - (yellow * 2); // Total green light time for both phases
greenphase1 = greenratio * greentot; // Green light duration for phase 1
greenphase2 = greentot - greenphase1; // Green light duration for phase 2
}
void loop() {
// Phase 1: Green light on, Phase 2: Red light on
digitalWrite(phase_1_green, HIGH);
digitalWrite(phase_1_red, LOW);
digitalWrite(phase_2_red, HIGH);
delay(greenphase1);
// Phase 1: Yellow light on, Green light off
digitalWrite(phase_1_green, LOW);
digitalWrite(phase_1_yellow, HIGH);
delay(yellow);
// Phase 1: Yellow light off, Red light on
digitalWrite(phase_1_yellow, LOW);
digitalWrite(phase_1_red, HIGH);
// Phase 2: Green light on, Phase 1: Red light on
digitalWrite(phase_2_green, HIGH);
digitalWrite(phase_1_red,HIGH);
digitalWrite(phase_2_red, LOW);
delay(greenphase2);
// Phase 2: Yellow light on, Green light off
digitalWrite(phase_2_green, LOW);
digitalWrite(phase_2_yellow, HIGH);
delay(yellow);
// Phase 2: Yellow light off, Red light on
digitalWrite(phase_2_yellow, LOW);
digitalWrite(phase_2_red, HIGH);
}