#define led1 25 // LED merah
#define led2 26 // LED kuning
#define led3 27 // LED hijau
#define tombol 15 // pin tombol
#define buzzer 2 // pin buzzer
int periode1 = 500; //periode LED kuning nyala
unsigned long waktu1 = 0; //variabel untuk menyimpan waktu LED merah nyala terakhir
int periode2 = 1000; //periode LED kuning mati
unsigned long waktu2 = 0; //variabel untuk menyimpan waktu LED merah mati terakhr
int ledmerah = 0;
void setup() {
pinMode(led1, OUTPUT); //pinmode led merah adalah output
pinMode(led2, OUTPUT); //pinmode led kuning adalah output
pinMode(led3, OUTPUT); //pinmode led hijau adalah output
pinMode(tombol, INPUT); // pinmode tombol input
pinMode(buzzer, OUTPUT); // pinmode buzzer output
Serial.begin(115200);
}
void loop() {
if(digitalRead(tombol) == LOW){ // jika tombol tidak dipencet
digitalWrite(led3, LOW); // led hijau mati
digitalWrite(led1, HIGH); // led merah nyala
noTone(buzzer); // buzzer mati
if(millis() >= waktu1 + periode1){ // millis() adalah pewaktu mulai dari 0, jika millis lebih dari waktu1 (nilai awai 0) + periode (4 detik)
waktu1 += periode1; // memasukan nilai waktu awal ditambah periode, nilai waktu akan berubah ubah mengikuti millis()
digitalWrite(led2, HIGH); // menyalakan LED kuning
}
if(millis() >= waktu2 + periode2){ // sama seperti sebelumnya, tapi untuk mematikan LED
waktu2 += periode2; // sama
digitalWrite(led2, LOW); // mematikan LED kuning
}
}
else if(digitalRead(tombol) == HIGH){ // jika tombol dipencet
Serial.println("Please Cross the Road"); // serial mengeluarkan kata please cross the road
digitalWrite(led1, LOW); // led merah mati
digitalWrite(led2, LOW); // led kuning mati
digitalWrite(led3, HIGH); // led hijau nyala
tone(buzzer, 1000); // buzzer menyala 1khz
delay(4000); // waktu 4 detik
}
}