#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C dan ukuran LCD
const int redLedPin = 2; // GPIO pin untuk LED merah
const int yellowLedPin = 4; // GPIO pin untuk LED kuning
const int greenLedPin = 5; // GPIO pin untuk LED hijau
const int buzzerPin = 13; // GPIO pin untuk buzzer
void setup() {
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Nyalakan latar belakang LCD
lcd.setCursor(0, 0);
lcd.print("Traffic Light");
pinMode(redLedPin, OUTPUT); // Set pin LED sebagai output
pinMode(yellowLedPin, OUTPUT);
pinMode(greenLedPin, OUTPUT);
pinMode(buzzerPin, OUTPUT); // Set pin buzzer sebagai output
}
void loop() {
// Lampu merah menyala, buzzer berbunyi, tampilan di LCD
lcd.setCursor(0, 1);
lcd.print("Merah - STOP");
digitalWrite(redLedPin, HIGH);
digitalWrite(yellowLedPin, LOW);
digitalWrite(greenLedPin, LOW);
tone(buzzerPin, 1000); // Bunyikan buzzer
delay(5000); // Tahan lampu merah selama 5 detik
// Lampu kuning menyala, buzzer berbunyi, tampilan di LCD
lcd.setCursor(0, 1);
lcd.print("Kuning - SIAP");
digitalWrite(redLedPin, LOW);
digitalWrite(yellowLedPin, HIGH);
digitalWrite(greenLedPin, LOW);
noTone(buzzerPin); // Matikan buzzer
delay(2000); // Tahan lampu kuning selama 2 detik
// Lampu hijau menyala, buzzer berbunyi, tampilan di LCD
lcd.setCursor(0, 1);
lcd.print("Hijau - MAJU");
digitalWrite(redLedPin, LOW);
digitalWrite(yellowLedPin, LOW);
digitalWrite(greenLedPin, HIGH);
noTone(buzzerPin); // Matikan buzzer
delay(5000); // Tahan lampu hijau selama 5 detik
}