#include <LiquidCrystal.h>
// LCD pins: RS, E, D4, D5, D6, D7
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
// LED pins
int redLED = 13;
int yellowLED = 12;
int greenLED = 11;
// Countdown function
void countdown(int totalSeconds, const char* message) {
for (int i = totalSeconds; i > 0; i--) {
int minutes = i / 60;
int seconds = i % 60;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(message);
lcd.setCursor(0, 1);
lcd.print("Time: ");
lcd.print(minutes);
lcd.print(":");
if (seconds < 10) {
lcd.print("0");
}
lcd.print(seconds);
delay(1000);
}
}
void setup() {
// Set LED pins as output
pinMode(redLED, OUTPUT);
pinMode(yellowLED, OUTPUT);
pinMode(greenLED, OUTPUT);
// Start LCD
lcd.begin(16, 2);
lcd.print("Traffic Light");
lcd.setCursor(0, 1);
lcd.print("System Ready");
delay(2000);
lcd.clear();
}
void loop() {
// RED light
digitalWrite(redLED, HIGH);
digitalWrite(yellowLED, LOW);
digitalWrite(greenLED, LOW);
countdown(60, "RED - STOP");
// YELLOW light
digitalWrite(redLED, LOW);
digitalWrite(yellowLED, HIGH);
digitalWrite(greenLED, LOW);
countdown(30, "YELLOW - WAIT");
// GREEN light
digitalWrite(redLED, LOW);
digitalWrite(yellowLED, LOW);
digitalWrite(greenLED, HIGH);
countdown(60, "GREEN - GO");
}