//CASTRO, AUBREY A.
//NW-301
//SHWINT - Mid Individual Assignment 1
//A TRAFFIC LIGHT SIMULATION WITH COUNTDOWN
// LCD I2C library:
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.init();
lcd.backlight();
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
}
void loop() {
// Red LED
lcd.setCursor(5, 0);
lcd.print("STOP!");
for (int i = 30; i >= 0; i--) {
lcd.setCursor(0, 1);
lcd.print("Time: ");
lcd.print(i);
lcd.print(" ");
digitalWrite(2, HIGH);
delay(1000);
}
digitalWrite(2, LOW);
lcd.clear();
// Yellow LED
lcd.setCursor(0, 0);
lcd.print("Prepare to go!");
for (int i = 3; i >= 0; i--) {
lcd.setCursor(0, 1);
lcd.print("Time: ");
lcd.print(i);
lcd.print(" ");
digitalWrite(3, HIGH);
delay(1000);
}
digitalWrite(3, LOW);
lcd.clear();
// Green LED
lcd.setCursor(6, 0);
lcd.print("GO!");
for (int i = 60; i >= 0; i--) {
lcd.setCursor(0, 1);
lcd.print("Time: ");
lcd.print(i);
lcd.print(" ");
digitalWrite(4, HIGH);
delay(1000);
}
digitalWrite(4, LOW);
lcd.clear();
// Flashing Green LED
for (int i = 0; i < 5; i++) {
digitalWrite(4, HIGH);
delay(500);
digitalWrite(4, LOW);
delay(500);
}
// Yellow LED for Stop
lcd.setCursor(0, 0);
lcd.print("Prepare to stop!");
for (int i = 3; i >= 0; i--) {
lcd.setCursor(0, 1);
lcd.print("Time: ");
lcd.print(i);
lcd.print(" ");
digitalWrite(3, HIGH);
delay(1000);
}
digitalWrite(3, LOW);
lcd.clear();
}