#include <ESP32Servo.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
Servo servoku;
int echoPin = 4;
int trigPin = 15;
int buzzer = 2;
void setup() {
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
servoku.attach(5);
lcd.init();
lcd.clear();
lcd.backlight();
}
float bacaUltrasonik(){
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
int durasi = pulseIn(echoPin, HIGH);
return durasi * 0.034 / 2;
}
void loop() {
lcd.clear();
float jarak = bacaUltrasonik();
if(jarak<=100){
tone(buzzer, 400);
delay(500);
tone(buzzer, 250);
delay(5000);
servoku.write(90);
lcd.print("Awas Ada Kereta ");
digitalWrite(13, HIGH);
digitalWrite(12, LOW);
}
else{
noTone(buzzer);
servoku.write(0);
lcd.print("Kereta Sudah Lewat");
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
}
delay(1000);
}