// mendefinisikan pin untuk lampu lalu lintas persimpangan 1
#define ledMerah1 13
#define ledKuning1 12
#define ledHijau1 11
// mendefinisikan pin untuk lampu lalu lintas persimpangan 2
#define ledMerah2 10
#define ledKuning2 9
#define ledHijau2 8
// mendefinisikan pin untuk lampu lalu lintas persimpangan 3
#define ledMerah3 7
#define ledKuning3 6
#define ledHijau3 5
// mendefinisikan tombol pedestrian untuk setiap persimpangan
#define pedestrianPersimpangan1 4
#define pedestrianPersimpangan2 3
#define pedestrianPersimpangan3 2
void setup() {
// Menginisialisasi seluruh pin yang digunakan untuk led sebagai output
pinMode(ledMerah1, OUTPUT);
pinMode(ledKuning1, OUTPUT);
pinMode(ledHijau1, OUTPUT);
pinMode(ledMerah2, OUTPUT);
pinMode(ledKuning2, OUTPUT);
pinMode(ledHijau2, OUTPUT);
pinMode(ledMerah3, OUTPUT);
pinMode(ledKuning3, OUTPUT);
pinMode(ledHijau3, OUTPUT);
// menginisialisasi input untuk tombol pedestrian pada setiap persimpangan
pinMode(pedestrianPersimpangan1, INPUT_PULLUP);
pinMode(pedestrianPersimpangan2, INPUT_PULLUP);
pinMode(pedestrianPersimpangan3, INPUT_PULLUP);
}
void loop() {
// Persimpangan 1 lampu hijau
digitalWrite(ledMerah1, LOW);
digitalWrite(ledKuning1, LOW);
digitalWrite(ledHijau1, HIGH);
// Persimpangan 2 lampu merah
digitalWrite(ledMerah2, HIGH);
digitalWrite(ledKuning2, LOW);
digitalWrite(ledHijau2, LOW);
// Persimpangan 3 lampu merah
digitalWrite(ledMerah3, HIGH);
digitalWrite(ledKuning3, LOW);
digitalWrite(ledHijau3, LOW);
// menunggu selama 10 detik atau sampai tombol pedestrian ditekan
for (int i = 0; i < 100; i++) {
delay(100);
if(digitalRead(pedestrianPersimpangan1)== LOW){
break;
}
}
// persimpangan 1 lampu kuning selama 3 detik
digitalWrite(ledMerah1, LOW);
digitalWrite(ledKuning1, HIGH);
digitalWrite(ledHijau1, LOW);
delay(3000);
// persimpangan 1 lampu merah
digitalWrite(ledMerah1, HIGH);
digitalWrite(ledKuning1, LOW);
digitalWrite(ledHijau1, LOW);
// persimpangan 2 lampu hijau
digitalWrite(ledMerah2, LOW);
digitalWrite(ledKuning2, LOW);
digitalWrite(ledHijau2, HIGH);
// menunggu selama 10 detik atau sampai tombol pedestrian ditekan
for (int i = 0; i < 100; i++) {
delay(100);
if(digitalRead(pedestrianPersimpangan2)== LOW){
break;
}
}
// persimpangan 2 lampu kuning selama 3 detik
digitalWrite(ledMerah2, LOW);
digitalWrite(ledKuning2, HIGH);
digitalWrite(ledHijau2, LOW);
delay(3000);
// persimpangan 2 lampu merah
digitalWrite(ledMerah2, HIGH);
digitalWrite(ledKuning2, LOW);
digitalWrite(ledHijau2, LOW);
// persimpangan 3 lampu hijau
digitalWrite(ledMerah3, LOW);
digitalWrite(ledKuning3, LOW);
digitalWrite(ledHijau3, HIGH);
// menunggu selama 10 detik atau sampai tombol pedestrian ditekan
for (int i = 0; i < 100; i++) {
delay(100);
if(digitalRead(pedestrianPersimpangan3)== LOW){
break;
}
}
// persimpangan 3 lampu kuning selama 3 detik
digitalWrite(ledMerah3, LOW);
digitalWrite(ledKuning3, HIGH);
digitalWrite(ledHijau3, LOW);
// persimpangan 3 lampu merah
digitalWrite(ledMerah3, HIGH);
digitalWrite(ledKuning3, LOW);
digitalWrite(ledHijau3, LOW);
}