// Definisi pin LED untuk masing-masing simpang
const int trafficLights[3][3] = {
{2, 3, 4}, // Simpang 1: Merah, Kuning, Hijau
{5, 6, 7}, // Simpang 2: Merah, Kuning, Hijau
{8, 9, 10} // Simpang 3: Merah, Kuning, Hijau
};
// Durasi dalam milidetik
const int redDuration = 5000; // Durasi lampu merah
const int yellowDuration = 2000; // Durasi lampu kuning
const int greenDuration = 5000; // Durasi lampu hijau
void setup() {
// Inisialisasi semua pin LED sebagai output
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
pinMode(trafficLights[i][j], OUTPUT);
}
}
}
void loop() {
// Simpang 1 hijau, Simpang 2 merah, Simpang 3 merah
setTrafficLights(0, HIGH, LOW, LOW);
setTrafficLights(1, LOW, LOW, HIGH);
setTrafficLights(2, LOW, LOW, HIGH);
delay(greenDuration);
// Simpang 1 kuning, Simpang 2 merah, Simpang 3 merah
setTrafficLights(0, LOW, HIGH, LOW);
setTrafficLights(1, LOW, LOW, HIGH);
setTrafficLights(2, LOW, LOW, HIGH);
delay(yellowDuration);
// Simpang 1 merah, Simpang 2 hijau, Simpang 3 merah
setTrafficLights(0, LOW, LOW, HIGH);
setTrafficLights(1, HIGH, LOW, LOW);
setTrafficLights(2, LOW, LOW, HIGH);
delay(greenDuration);
// Simpang 1 merah, Simpang 2 kuning, Simpang 3 merah
setTrafficLights(0, LOW, LOW, HIGH);
setTrafficLights(1, LOW, HIGH, LOW);
setTrafficLights(2, LOW, LOW, HIGH);
delay(yellowDuration);
// Simpang 1 merah, Simpang 2 merah, Simpang 3 hijau
setTrafficLights(0, LOW, LOW, HIGH);
setTrafficLights(1, LOW, LOW, HIGH);
setTrafficLights(2, HIGH, LOW, LOW);
delay(greenDuration);
// Simpang 1 merah, Simpang 2 merah, Simpang 3 kuning
setTrafficLights(0, LOW, LOW, HIGH);
setTrafficLights(1, LOW, LOW, HIGH);
setTrafficLights(2, LOW, HIGH, LOW);
delay(yellowDuration);
}
void setTrafficLights(int intersection, int green, int yellow, int red) {
digitalWrite(trafficLights[intersection][0], red);
digitalWrite(trafficLights[intersection][1], yellow);
digitalWrite(trafficLights[intersection][2], green);
}