void setup() {
// Setup pin untuk masing-masing LED lampu lalu lintas
pinMode(2, OUTPUT); // LED jalur satu - merah
pinMode(3, OUTPUT); // LED jalur satu - kuning
pinMode(4, OUTPUT); // LED jalur satu - hijau
pinMode(5, OUTPUT); // LED jalur dua - merah
pinMode(6, OUTPUT); // LED jalur dua - kuning
pinMode(7, OUTPUT); // LED jalur dua - hijau
pinMode(8, OUTPUT); // LED jalur tiga - merah
pinMode(9, OUTPUT); // LED jalur tiga - kuning
pinMode(10, OUTPUT); // LED jalur tiga - hijau
// Inisialisasi kondisi awal: jalur satu dan dua hijau, jalur tiga merah
digitalWrite(4, HIGH); // LED jalur satu - hijau
digitalWrite(7, HIGH); // LED jalur dua - hijau
digitalWrite(10, HIGH); // LED jalur tiga - hijau
}
void loop() {
// Jalankan fungsi untuk setiap jalur lampu lalu lintas secara bergantian
jalur_satu(); // Simpang pertama
jalur_dua(); // Simpang kedua
jalur_tiga(); // Simpang ketiga
}
// Fungsi untuk mengatur fase lampu lalu lintas pada jalur pertama
void jalur_satu() {
digitalWrite(4, LOW); // Matikan lampu hijau jalur satu
digitalWrite(2, HIGH); // Nyalakan lampu merah jalur satu
delay(2000); // Tunggu selama 2 detik
digitalWrite(2, LOW); // Matikan lampu merah jalur satu
digitalWrite(3, HIGH); // Nyalakan lampu kuning jalur satu
delay(200); // Tunggu selama 0.2 detik
digitalWrite(3, LOW); // Matikan lampu kuning jalur satu
digitalWrite(4, HIGH); // Nyalakan lampu hijau jalur satu kembali
}
// Fungsi untuk mengatur fase lampu lalu lintas pada jalur kedua
void jalur_dua() {
digitalWrite(7, LOW); // Matikan lampu hijau jalur dua
digitalWrite(5, HIGH); // Nyalakan lampu merah jalur dua
delay(2000); // Tunggu selama 2 detik
digitalWrite(5, LOW); // Matikan lampu merah jalur dua
digitalWrite(6, HIGH); // Nyalakan lampu kuning jalur dua
delay(200); // Tunggu selama 0.2 detik
digitalWrite(6, LOW); // Matikan lampu kuning jalur dua
digitalWrite(7, HIGH); // Nyalakan lampu hijau jalur dua kembali
}
// Fungsi untuk mengatur fase lampu lalu lintas pada jalur ketiga
void jalur_tiga() {
digitalWrite(10, LOW); // Matikan lampu hijau jalur tiga
digitalWrite(8, HIGH); // Nyalakan lampu merah jalur tiga
delay(2000); // Tunggu selama 2 detik
digitalWrite(8, LOW); // Matikan lampu merah jalur tiga
digitalWrite(9, HIGH); // Nyalakan lampu kuning jalur tiga
delay(200); // Tunggu selama 0.2 detik
digitalWrite(9, LOW); // Matikan lampu kuning jalur tiga
digitalWrite(10, HIGH); // Nyalakan lampu hijau jalur tiga kembali
}