const int ledPinMerah = 19; // Pin untuk LED merah
const int ledPinKuning = 4; // Pin untuk LED kuning
const int ledPinHijau = 15; // Pin untuk LED hijau
const int buttonPin = 5; // Pin untuk push button
const int buzzerPin = 12; // Pin untuk buzzer
bool buttonState = false; // Variabel untuk menyimpan status push button
void setup() {
pinMode(ledPinMerah, OUTPUT);
pinMode(ledPinKuning, OUTPUT);
pinMode(ledPinHijau, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP); // Menggunakan internal pull-up resistor
pinMode(buzzerPin, OUTPUT);
Serial.begin(9600); // Inisialisasi serial monitor
}
void loop() {
buttonState = digitalRead(buttonPin); // Membaca status push button
if (buttonState == HIGH) { // Jika push button OFF (HIGH karena pull-up)
// Kondisi 1: LED merah menyala, LED kuning blinking, LED hijau mati, buzzer OFF
digitalWrite(ledPinMerah, HIGH); // LED merah menyala
digitalWrite(ledPinHijau, LOW); // LED hijau mati
digitalWrite(buzzerPin, LOW); // Buzzer OFF
// Blinking LED kuning setiap 1 detik
digitalWrite(ledPinKuning, HIGH);
delay(1000); // LED kuning menyala selama 1 detik
digitalWrite(ledPinKuning, LOW);
delay(1000); // LED kuning mati selama 1 detik
Serial.println("Dilarang Menyeberang Jalan"); // Pesan di serial monitor
} else { // Jika push button ON (LOW karena ditekan)
// Kondisi 2: LED hijau menyala selama 4 detik, LED merah dan kuning mati, buzzer ON
digitalWrite(ledPinMerah, LOW); // LED merah mati
digitalWrite(ledPinKuning, LOW); // LED kuning mati
digitalWrite(ledPinHijau, HIGH); // LED hijau menyala
digitalWrite(buzzerPin, HIGH); // Buzzer ON
Serial.println("Silahkan Menyeberang Jalan"); // Pesan di serial monitor
delay(4000); // Tunggu 4 detik
// Kembali ke kondisi 1
digitalWrite(ledPinHijau, LOW); // LED hijau mati
digitalWrite(buzzerPin, LOW); // Buzzer OFF
}
}