#define IR_SENSOR 2 // IR sensor connected to digital pin 2
#define RED 4 // Red LED (Stop)
#define YELLOW 5 // Yellow LED (Dimming effect)
#define GREEN 6 // Green LED (Go)
void setup() {
pinMode(IR_SENSOR, INPUT);
pinMode(RED, OUTPUT);
pinMode(YELLOW, OUTPUT);
pinMode(GREEN, OUTPUT);
Serial.begin(9600);
void loop() {
if (digitalRead(IR_SENSOR) == LOW) { // 🚗 Object Detected
Serial.println("🚗 Object detected! Starting traffic sequence.");
runTrafficLightCycle(); // Run the traffic light sequence
// Function to run the traffic light sequence
void runTrafficLightCycle() {
Serial.println("🚦 Traffic light cycle started");
// Step 1: Red Light ON (Stop)
digitalWrite(RED, HIGH);
digitalWrite(GREEN, LOW);
digitalWrite(YELLOW, LOW);
delay(5000); // Red for 5 sec (Adjust as needed)
// Step 2: Yellow Light Blinks (Get Ready)
for (int i = 0; i < 3; i++) {
digitalWrite(YELLOW, HIGH);
delay(500);
digitalWrite(YELLOW, LOW);
delay(500);
// Step 3: Green Light ON (Go) + Yellow Dimming Effect
digitalWrite(RED, LOW);
digitalWrite(GREEN, HIGH);
Serial.println("🟢 Green ON, Yellow Dimming...");
for (int brightness = 255; brightness >= 0; brightness -= 5) { //
Gradually dim
analogWrite(YELLOW, brightness);
delay(50);
analogWrite(YELLOW, 0); // Ensure it's fully OFF
delay(15000); // Green for 5 sec (Adjust as needed)
// Turn off all lights
digitalWrite(GREEN, LOW);
digitalWrite(YELLOW, LOW);
digitalWrite(RED, LOW);
Serial.println("🚦 All lights OFF. Waiting for next object.");