// Pin LED untuk setiap simpang
int simpang1Merah = 2;
int simpang1Kuning = 3;
int simpang1Hijau = 4;
int simpang2Merah = 5;
int simpang2Kuning = 6;
int simpang2Hijau = 7;
int simpang3Merah = 8;
int simpang3Kuning = 9;
int simpang3Hijau = 10;
int simpang4Merah = 11;
int simpang4Kuning = 12;
int simpang4Hijau = 13;
// Waktu siklus lampu (dalam milidetik)
int waktuHijau = 5000; // 5 detik hijau
int waktuKuning = 2000; // 2 detik kuning
int waktuMerah = 5000; // 5 detik merah
void setup() {
// Set semua pin LED sebagai output
pinMode(simpang1Merah, OUTPUT);
pinMode(simpang1Kuning, OUTPUT);
pinMode(simpang1Hijau, OUTPUT);
pinMode(simpang2Merah, OUTPUT);
pinMode(simpang2Kuning, OUTPUT);
pinMode(simpang2Hijau, OUTPUT);
pinMode(simpang3Merah, OUTPUT);
pinMode(simpang3Kuning, OUTPUT);
pinMode(simpang3Hijau, OUTPUT);
pinMode(simpang4Merah, OUTPUT);
pinMode(simpang4Kuning, OUTPUT);
pinMode(simpang4Hijau, OUTPUT);
// Mulai dengan semua lampu di simpang merah
semuaMerah();
}
void loop() {
// Siklus untuk Simpang 1
simpangHijau(simpang1Hijau, simpang1Kuning, simpang1Merah);
// Siklus untuk Simpang 2
simpangHijau(simpang2Hijau, simpang2Kuning, simpang2Merah);
// Siklus untuk Simpang 3
simpangHijau(simpang3Hijau, simpang3Kuning, simpang3Merah);
// Siklus untuk Simpang 4
simpangHijau(simpang4Hijau, simpang4Kuning, simpang4Merah);
}
// Fungsi untuk menyalakan siklus lampu hijau di satu simpang
void simpangHijau(int pinHijau, int pinKuning, int pinMerah) {
semuaMerah(); // Pastikan semua simpang lainnya merah
// Nyalakan lampu hijau
digitalWrite(pinMerah, LOW); // Matikan lampu merah simpang ini
digitalWrite(pinHijau, HIGH); // Nyalakan lampu hijau simpang ini
delay(waktuHijau); // Tunggu selama lampu hijau
// Nyalakan lampu kuning
digitalWrite(pinHijau, LOW); // Matikan lampu hijau simpang ini
digitalWrite(pinKuning, HIGH); // Nyalakan lampu kuning simpang ini
delay(waktuKuning); // Tunggu selama lampu kuning
// Kembali ke merah
digitalWrite(pinKuning, LOW); // Matikan lampu kuning simpang ini
digitalWrite(pinMerah, HIGH); // Nyalakan kembali lampu merah simpang ini
}
// Fungsi untuk memastikan semua simpang merah
void semuaMerah() {
// Simpang 1
digitalWrite(simpang1Merah, HIGH);
digitalWrite(simpang1Kuning, LOW);
digitalWrite(simpang1Hijau, LOW);
// Simpang 2
digitalWrite(simpang2Merah, HIGH);
digitalWrite(simpang2Kuning, LOW);
digitalWrite(simpang2Hijau, LOW);
// Simpang 3
digitalWrite(simpang3Merah, HIGH);
digitalWrite(simpang3Kuning, LOW);
digitalWrite(simpang3Hijau, LOW);
// Simpang 4
digitalWrite(simpang4Merah, HIGH);
digitalWrite(simpang4Kuning, LOW);
digitalWrite(simpang4Hijau, LOW);
}