// Pin untuk sensor ultrasonik HC-SR04
const int trigPIN = 9;
const int echoPIN = 8;
// Pin untuk lampu LED dan buzzer
const int lampuMERAH = 13;
const int lampuKUNING = 12;
const int lampuHIJAU = 11;
const int buzzerPIN = 10;
// Variabel untuk jarak
long durasi;
int jarak;
void setup() {
pinMode(trigPIN, OUTPUT);
pinMode(echoPIN, INPUT);
pinMode(lampuMERAH, OUTPUT);
pinMode(lampuKUNING, OUTPUT);
pinMode(lampuHIJAU, OUTPUT);
pinMode(buzzerPIN, OUTPUT);
Serial.begin(9600); // Untuk debug
}
void loop() {
// Mengirimkan sinyal ultrasonik
digitalWrite(trigPIN, LOW);
delayMicroseconds(2);
digitalWrite(trigPIN, HIGH);
delayMicroseconds(10);
digitalWrite(trigPIN, LOW);
// Membaca sinyal yang diterima (echo)
durasi = pulseIn(echoPIN, HIGH);
// Menghitung jarak dalam cm
jarak = durasi * 0.034 / 2;
Serial.print("Jarak: ");
Serial.println(jarak);
// Kondisi berdasarkan jarak
if (jarak <= 50) { // Dekat dengan objek
digitalWrite(lampuMERAH, HIGH); // Lampu merah ON
digitalWrite(lampuKUNING, LOW); // Lampu kuning OFF
digitalWrite(lampuHIJAU, LOW); // Lampu hijau OFF
tone(buzzerPIN, 1000); // Buzzer berbunyi cepat
delay(100); // Bunyi cepat
noTone(buzzerPIN); // Buzzer mati
delay(100);
}
else if (jarak > 50 && jarak <= 150) { // Hampir dekat
digitalWrite(lampuMERAH, LOW); // Lampu merah OFF
digitalWrite(lampuKUNING, HIGH); // Lampu kuning ON
digitalWrite(lampuHIJAU, LOW); // Lampu hijau OFF
tone(buzzerPIN, 1000); // Buzzer berbunyi lebih lambat
delay(300); // Bunyi sedikit lambat
noTone(buzzerPIN); // Buzzer mati
delay(300);
}
else { // Jauh dari objek
digitalWrite(lampuMERAH, LOW); // Lampu merah OFF
digitalWrite(lampuKUNING, LOW); // Lampu kuning OFF
digitalWrite(lampuHIJAU, HIGH); // Lampu hijau ON
noTone(buzzerPIN); // Buzzer tidak bunyi
}
delay(100); // Delay sebentar sebelum membaca lagi
}