// Pin assignment
#define RED_A 2
#define YELLOW_A 4
#define GREEN_A 5
#define RED_B 12
#define YELLOW_B 13
#define GREEN_B 14
#define RED_C 16
#define YELLOW_C 17
#define GREEN_C 18
#define BUZZER_PIN 33 // Buzzer aktif tinggi
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);
}
void setup() {
// Set all pins as OUTPUT
int pins[] = {
RED_A, YELLOW_A, GREEN_A,
RED_B, YELLOW_B, GREEN_B,
RED_C, YELLOW_C, GREEN_C,
BUZZER_PIN
};
for (int i = 0; i < sizeof(pins)/sizeof(pins[0]); i++) {
pinMode(pins[i], OUTPUT);
digitalWrite(pins[i], LOW); // Ensure all off initially
}
}
void loop() {
// === Jalan A Hijau ===
setLights(LOW, LOW, HIGH, HIGH, LOW, LOW, HIGH, LOW, LOW);
digitalWrite(BUZZER_PIN, LOW);
delay(10000);
// === Jalan A Kuning ===
setLights(LOW, HIGH, LOW, HIGH, LOW, LOW, HIGH, LOW, LOW);
digitalWrite(BUZZER_PIN, HIGH);
delay(5000);
digitalWrite(BUZZER_PIN, LOW);
// === Jalan B Hijau ===
setLights(HIGH, LOW, LOW, LOW, LOW, HIGH, HIGH, LOW, LOW);
delay(10000);
// === Jalan B Kuning ===
setLights(HIGH, LOW, LOW, LOW, HIGH, LOW, HIGH, LOW, LOW);
digitalWrite(BUZZER_PIN, HIGH);
delay(5000);
digitalWrite(BUZZER_PIN, LOW);
// === Jalan C Hijau ===
setLights(HIGH, LOW, LOW, HIGH, LOW, LOW, LOW, LOW, HIGH);
delay(10000);
// === Jalan C Kuning ===
setLights(HIGH, LOW, LOW, HIGH, LOW, LOW, LOW, HIGH, LOW);
digitalWrite(BUZZER_PIN, HIGH);
delay(5000);
digitalWrite(BUZZER_PIN, LOW);
}