// Deklarasi pin yang digunakan untuk sensor ultrasonik dan lampu LED
const byte trigPin = 19;
const byte echoPin = 18;
const byte redLedPin = 4;
const byte yellowLedPin = 5;
//Variabel untuk menyimpan durasi sinyal ultrasonik & jarak yang diukur
long duration;
long distance;
void setup() {
// Mengatur pin-pin sebagai input atau output
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(redLedPin, OUTPUT);
pinMode(yellowLedPin, OUTPUT);
Serial.begin(115200);
Serial.println("Hello, Esp32!");
}
void loop() {
// Mengirimkan sinyal ultrasonik untuk memulai pengukuran jarak menggunakan sensor HC-SR04.
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Menerima sinyal kembali dari sensor ultrasonik dan mengukur durasinya.
duration = pulseIn(echoPin, HIGH);
// Menghitung jarak berdasarkan durasi sinyal yang diukur.
distance = duration * 0.034 / 2;
Serial.println(distance);
// Mengendalikan lampu LED berdasarkan jarak yang diukur.
if (distance < 20) {
// Jika jarak kurang dari 20 cm, lampu merah berkedip lebih cepat
Serial.println("Jarak dengan Objek sangat dekat, hati-hati");
for(int i = 0; i < 5; i++) {
digitalWrite(redLedPin, HIGH);
delay(250);
digitalWrite(redLedPin, LOW);
delay(250);
}
// Matikan lampu kuning jika jarak kurang dari 20 cm
digitalWrite(yellowLedPin, LOW);
} else if (distance >= 20 && distance < 40) {
// Jika jarak antara 20 cm dan 40 cm, lampu kuning menyala
digitalWrite(redLedPin, LOW);
digitalWrite(yellowLedPin, HIGH);
Serial.println("Jarak dengan Objek perlu diperhatikan, hati – hati");
} else {
// Jika jarak lebih dari atau sama dengan 40 cm, kedua lampu LED dimatikan
digitalWrite(redLedPin, LOW);
digitalWrite(yellowLedPin, LOW);
}
delay(1000);
}