#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Define I2C address for the LCD. This address may vary depending on your specific LCD.
#define I2C_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_ROWS 2
// Initialize the LCD library
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_ROWS);
// Define LED pins
const int redLED = 2;
const int orangeLED = 3;
const int greenLED = 4;
// Function to display the remaining time on the LCD
void displayTime(const char* message, int seconds) {
lcd.clear();
lcd.print(message);
lcd.setCursor(0, 1);
lcd.print("Time: ");
lcd.print(seconds);
lcd.print(" sec");
}
void setup() {
// Initialize the LCD
lcd.begin(LCD_COLUMNS, LCD_ROWS);
lcd.backlight();
lcd.clear();
// Initialize LEDs
pinMode(redLED, OUTPUT);
pinMode(orangeLED, OUTPUT);
pinMode(greenLED, OUTPUT);
// Start with all LEDs off
digitalWrite(redLED, LOW);
digitalWrite(orangeLED, LOW);
digitalWrite(greenLED, LOW);
}
void loop() {
// Red Light On
digitalWrite(redLED, HIGH);
digitalWrite(orangeLED, LOW);
digitalWrite(greenLED, LOW);
for (int i = 10; i > 0; i--) {
displayTime("Red Light ON", i);
delay(1000);
}
// Orange Light On
digitalWrite(redLED, LOW);
digitalWrite(orangeLED, HIGH);
digitalWrite(greenLED, LOW);
for (int i = 2; i > 0; i--) {
displayTime("Orange Light ON", i);
delay(1000);
}
// Blue Light On
digitalWrite(redLED, LOW);
digitalWrite(orangeLED, LOW);
digitalWrite(greenLED, HIGH);
for (int i = 8; i > 0; i--) {
displayTime("Green Light ON", i);
delay(1000);
}
// All lights off for a short interval
digitalWrite(redLED, LOW);
digitalWrite(orangeLED, LOW);
digitalWrite(greenLED, LOW);
for (int i = 1; i > 0; i--) {
displayTime("All Lights OFF", i);
delay(1000);
}
}