//mendefinisikan variabel pin snsosr ultrasonik
const byte trigPin = 19;//trigPin untuk mengirim sinyal ultrasonik
const byte echoPin = 18;//echoPin untuk menerima sinyal pantulan kembali
//mendefiniskan variabel pinlampu
const int pinLampuKuning = 4;
const int pinLampuMerah = 5;
long duration;//variabel untuk menyimpan durasi waktu sinyal ultrasonik
long distance;//variabel untuk menyimpan jarak yang diukur dari sensor ultrasonik ke objek
//bagian yang dieksekusi hanya seklai ketika ESP32 pertama kali dinyalakan
void setup() {
// put your setup code here, to run once:
pinMode(trigPin, OUTPUT);//mendefnisikan trigPin sebagai output
pinMode(echoPin, INPUT);//mendefinisikan echoPin sebagai input
//mendefinisikan pin lampu sebagai output
pinMode(pinLampuKuning, OUTPUT);
pinMode(pinLampuMerah, OUTPUT);
Serial.begin(115200);
Serial.println("Hello, ESP32!");
}
//bagian kode yang akan terus di eksekusi secara berulang
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(trigPin, LOW);//menetapkan pin trigPin ke nilai rendah
delayMicroseconds(2);//penundaan sebesar 2 mikrodetik
digitalWrite(trigPin, HIGH);//menaikan triPin dan memulai pengiriman sinyal ultrasonik dari sensor
delayMicroseconds(5);//penundaan sebesar 5 mikrodetik
digitalWrite(trigPin, LOW);// pin trigPin kembali diatur ke LOW pengiriman sinyal ultrasonik selesai
duration = pulseIn(echoPin, HIGH);//Mengukur durasi waktu dari sinyal pantulan yang diterima oleh pin echo
distance = (duration * 0.0343)/2;//Menghitung jarak berdasarkan durasi waktu menggunakan rumus jarak = (durasi * kecepatan suara) / 2
Serial.print(distance);//Mencetak jarak yang diukur ke serial monitor
Serial.print(" cm");//mencetak dalam satuan cm
Serial.println();
if (distance > 350) {
Serial.println("Keadaan aman");
digitalWrite(pinLampuKuning, LOW);
digitalWrite(pinLampuMerah, LOW);
//Jika jarak lebih dari 350 cm
//maka dicetak "Keadaan aman" dan kedua lampu dimatikan
} else if (distance >= 150 && distance <= 350) {
digitalWrite(pinLampuKuning, HIGH);
digitalWrite(pinLampuMerah, LOW);
Serial.println("Warning");
//Jika jarak antara 150 hingga 350 cm
//maka lampu kuning dinyalakan dan dicetak "Warning"
} else {
digitalWrite(pinLampuKuning, LOW);
digitalWrite(pinLampuMerah, HIGH);
Serial.println("Keadaan danger");
//jika jarak kurang dari 150 cm
//maka lampu merah dinyalakan dan dicetak "Keadaan danger"
}
delay(1000);
//Menunda eksekusi program selama 1 detik
//sebelum melanjutkan ke iterasi berikutnya
}