// Pin assignment untuk 3 simpang, setiap simpang ada Merah, Kuning, Hijau
const int RED_A = 2;
const int YELLOW_A = 3;
const int GREEN_A = 4;
const int RED_B = 5;
const int YELLOW_B = 6;
const int GREEN_B = 7;
const int RED_C = 8;
const int YELLOW_C = 9;
const int GREEN_C = 10;
// Masa dalam milisaat (boleh ubah ikut suka)
const int GREEN_TIME = 4000; // 4 saat hijau
const int YELLOW_TIME = 1500; // 1.5 saat kuning
const int RED_TIME = 500; // 0.5 saat pertukaran (optional)
void setup() {
// Set semua pin sebagai OUTPUT
int pins[] = {RED_A, YELLOW_A, GREEN_A, RED_B, YELLOW_B, GREEN_B, RED_C, YELLOW_C, GREEN_C};
for (int i = 0; i < 9; i++) {
pinMode(pins[i], OUTPUT);
}
}
void loop() {
// --- Jalan A Hijau ---
setLights(HIGH, LOW, LOW, // A: Merah, Kuning, Hijau
HIGH, LOW, LOW, // B
HIGH, LOW, LOW); // C
digitalWrite(GREEN_A, HIGH); digitalWrite(RED_A, LOW);
digitalWrite(RED_B, HIGH); digitalWrite(GREEN_B, LOW);
digitalWrite(RED_C, HIGH); digitalWrite(GREEN_C, LOW);
delay(GREEN_TIME);
// --- Jalan A Kuning ---
setLights(HIGH, HIGH, LOW,
HIGH, LOW, LOW,
HIGH, LOW, LOW);
delay(YELLOW_TIME);
// --- Jalan B Hijau ---
setLights(HIGH, LOW, LOW,
LOW, LOW, HIGH,
HIGH, LOW, LOW);
delay(RED_TIME);
setLights(HIGH, LOW, LOW,
LOW, LOW, HIGH,
HIGH, LOW, LOW);
delay(GREEN_TIME);
// --- Jalan B Kuning ---
setLights(HIGH, LOW, LOW,
HIGH, HIGH, LOW,
HIGH, LOW, LOW);
delay(YELLOW_TIME);
// --- Jalan C Hijau ---
setLights(HIGH, LOW, LOW,
HIGH, LOW, LOW,
LOW, LOW, HIGH);
delay(RED_TIME);
setLights(HIGH, LOW, LOW,
HIGH, LOW, LOW,
LOW, LOW, HIGH);
delay(GREEN_TIME);
// --- Jalan C Kuning ---
setLights(HIGH, LOW, LOW,
HIGH, LOW, LOW,
HIGH, HIGH, LOW);
delay(YELLOW_TIME);
}
// Fungsi bantu untuk mudahkan ON/OFF lampu
void setLights(int rA, int yA, int gA, int rB, int yB, int gB, int rC, int yC, int gC) {
digitalWrite(RED_A, rA);
digitalWrite(YELLOW_A, yA);
digitalWrite(GREEN_A, gA);
digitalWrite(RED_B, rB);
digitalWrite(YELLOW_B, yB);
digitalWrite(GREEN_B, gB);
digitalWrite(RED_C, rC);
digitalWrite(YELLOW_C, yC);
digitalWrite(GREEN_C, gC);
}