//membuat variable nomor colokan sensor ultrasonic HC-SR04
const byte trigPin = 19;
const byte echoPin = 18;
//variable buzer
const byte buzerPin = 22;
//membuat variable nomor colokan lampu
const int pinLampuMerah = 16;
//membuat variable duration & distance untuk menampung data
long duration;
long distance;
//menghitung waktu
int count = 0;
void setup() {
// memasukkan kode permulaan untuk menjalankan sekali di awal
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzerPin, OUTPUT);
pinMode(pinLampuMerah, OUTPUT);
Serial.begin(115200);
Serial.println("Hello, ESP32!");
}
void loop() {
//memasukkan waktu
Serial.println(count);
//angka kita set akan ditambah 1
count = count + 1;
// memasukkan kode utama untuk melakukan perulangan
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
//memancarkan sensor ultrasonik
digitalWrite(trigPin, HIGH);
delayMicroseconds(5);
digitalWrite(trigPin, LOW);
//menangkap sensor ultrasonik
duration = pulseIn(echoPin, HIGH);
//rumus mengukur jarak
distance = (duration * 0.0343)/2;
//menampilkan jarak
Serial.print(distance);
Serial.print(" cm");
Serial.println();
//jika ada benda melitas
//mencetak "Bahaya-Bahaya" & lampu merah berkedip dengan cepat
if (distance < 100) {
digitalWrite(pinLampuMerah, HIGH);
digitalWrite(pinLampuMerah, LOW);
delay(500);
//buzzer berbunyi not not dengan jarak 0,2 detik
tone(buzerPin, 200);
delay(200);
tone(buzerPin, 0);
Serial.println("Bahaya-Bahaya");
//kita set angka ke 0 lagi
count = 0;
}
//jika ada tidak objek melintas kurang dari 30 detik
//lampu merah berkedip dengan lambat
else if (distance > 100 && count < 30) {
tone(buzerPin, 500);
digitalWrite(pinLampuMerah, HIGH);
delay(1000);
digitalWrite(pinLampuMerah, LOW);
delay(1000);
}
//jika ada tidak objek melintas selama 30 detik
//lampu merah mati
else if (distance > 100 && count > 30) {
digitalWrite(pinLampuMerah, LOW);
}
}
https://gist.githubusercontent.com/rifa 716/36deae618f1b043fd23a6ac346371867/raw/c7967eface66a1e099fc7410108351d1550d785c/gistfile1.txt