#include <ESP32Servo.h>
const int trigPin = 5;
const int echoPin = 18;
const int servoPin = 15;
const int ledMerah = 19;
const int ledHijau = 21;
Servo myServo;
const int posisiTertutup = 0;
const int posisiTerbuka = 90;
void setup() {
Serial.begin(115200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledMerah, OUTPUT);
pinMode(ledHijau, OUTPUT);
myServo.setPeriodHertz(50);
myServo.attach(servoPin, 500, 2400);
myServo.write(posisiTertutup);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long durasi = pulseIn(echoPin, HIGH);
float jarak = durasi * 0.034 / 2;
Serial.print("Jarak saat ini: ");
Serial.print(jarak);
Serial.println(" cm");
if (jarak > 30) {
myServo.write(posisiTertutup);
digitalWrite(ledMerah, HIGH);
digitalWrite(ledHijau, LOW);
}
else {
myServo.write(posisiTerbuka);
digitalWrite(ledHijau, HIGH);
digitalWrite(ledMerah, LOW);
}
delay(100);
}