//membuat variable nomor colokan sensor ultrasonic HC-SR04
const byte trigPin = 19; // nomor pin yang akan digunakan sebagai pin "trigger" dalam program
const byte echoPin = 18;
//membuat variable nomor colokan lampu
const int pinLampuKuning = 17;
const int pinLampuMerah = 16;
//membuat variable duration & distance untuk menampung data
long duration;
long distance;
void setup() {
// memasukkan kode permulaan untuk menjalankan sekali di awal
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(pinLampuKuning, OUTPUT);
pinMode(pinLampuMerah, OUTPUT);
Serial.begin(115200);
Serial.println("Hello, ESP32!");
}
void loop() {
// memasukkan kode utama untuk melakukan perulangan
digitalWrite(trigPin, LOW);// akan membuat pin 19 menjadi logika rendah
delayMicroseconds(2);
//memancarkan sensor ultrasonik
digitalWrite(trigPin, HIGH); //akan membuat pin 19 menjadi logika tinggi
delayMicroseconds(5); //untuk memberikan waktu bagi sistem untuk menstabilkan kondisi sebelum melakukan operasi selanjutnya
digitalWrite(trigPin, LOW);
//menangkap sensor ultrasonik
duration = pulseIn(echoPin, HIGH); //akan menyimpan durasi pulsa tingkat tinggi yang diterima oleh pin echoPin dalam variabel durasi
//rumus mengukur jarak
distance = (duration * 0.0343)/2;
//menampilkan jarak
Serial.print(distance);
Serial.print(" cm");
Serial.println();
//jika jarak lebih dari 350cm,
//mencetak "Keadaan aman" & kedua lampu mati
if (distance > 350) {
Serial.println("Keadaan aman");
digitalWrite(pinLampuKuning, LOW);
digitalWrite(pinLampuMerah, LOW);
}
//jika jarak lebih dari/sama dengan 150cm & kurang dari/sama dengan 350cm,
//mencetak "Warning" & lampu kuning menyala, lampu merah mati
else if (distance >= 150 && distance <= 350) {
digitalWrite(pinLampuKuning, HIGH);
digitalWrite(pinLampuMerah, LOW);
Serial.println("Warning");
}
//selain data jarak di atas / jarak kurang dari 150
//mencetak "Keadaan danger" & lampu kuning mati, lampu merah menyala
else {
digitalWrite(pinLampuKuning, LOW);
digitalWrite(pinLampuMerah, HIGH);
Serial.println("Keadaan danger");
}
//dibeikan waktu tunda 1 detik sebelum diperulangan dijalankan lagi
delay(1000);
}