const int RED = 8, YELLOW = 9, GREEN = 10;
const int TRIG = 2, ECHO = 3;
void setup() {
pinMode(RED, OUTPUT);
pinMode(YELLOW, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
Serial.begin(9600);
}
void loop() {
// Membaca jarak dari sensor ultrasonic
digitalWrite(TRIG, LOW); delayMicroseconds(2);
digitalWrite(TRIG, HIGH); delayMicroseconds(10);
digitalWrite(TRIG, LOW);
long duration = pulseIn(ECHO, HIGH);
int distance = duration * 0.034 / 2;
// LOGIKA PINTAR:
// Jika jarak benda < 100cm, anggap ada antrean kendaraan
if (distance < 100 && distance > 0) {
Serial.println("Kendaraan terdeteksi! Lampu Hijau Prioritas.");
digitalWrite(RED, LOW);
digitalWrite(YELLOW, LOW);
digitalWrite(GREEN, HIGH);
delay(5000); // Beri waktu hijau lebih lama
} else {
// Siklus Normal
digitalWrite(GREEN, LOW);
digitalWrite(RED, HIGH);
delay(3000);
digitalWrite(RED, LOW);
digitalWrite(YELLOW, HIGH);
delay(1000);
digitalWrite(YELLOW, LOW);
digitalWrite(GREEN, HIGH);
delay(3000);
}
}