#include <ESP32Servo.h>
#include <LiquidCrystal_I2C.h>
// ----- AYARLAR (bunları değiştirip deneyin) -----
int yakinMesafe = 100; // Araç bu mesafeden yakınsa bariyer açılır (cm)
int acikAci = 90; // Bariyer açıkken servo açısı
int kapaliAci = 0; // Bariyer kapalıyken servo açısı
// -------------------------------------------------
int trigPin = 5;
int echoPin = 19;
int servoPin = 18;
Servo bariyer;
LiquidCrystal_I2C ekran(0x27, 16, 2);
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
bariyer.attach(servoPin);
bariyer.write(kapaliAci);
ekran.init();
ekran.backlight();
}
void loop() {
// 1) Sensör ses dalgası gönderir
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// 2) Sesin geri gelme süresini ölç ve santimetreye çevir
long sure = pulseIn(echoPin, HIGH, 30000);
int mesafe = sure * 0.034 / 2;
// 3) Karar ver
if (sure > 0 && mesafe < yakinMesafe) {
bariyer.write(acikAci);
ekran.setCursor(0, 0);
ekran.print("Hos geldiniz! ");
ekran.setCursor(0, 1);
ekran.print("Mesafe:");
ekran.print(mesafe);
ekran.print(" Aci:");
ekran.print(acikAci);
ekran.print(" ");
} else {
bariyer.write(kapaliAci);
ekran.setCursor(0, 0);
ekran.print("Bariyer KAPALI ");
ekran.setCursor(0, 1);
ekran.print("Arac yok ");
}
delay(300);
}