#include <ESP32Servo.h>
Servo myservo;
#define TRIG_PIN 14 // Pin Trigger sensor ultrasonik
#define ECHO_PIN 12 // Pin Echo sensor ultrasonik
#define SERVO_PIN 22 // Pin yang terhubung ke servo
#define LED_PIN 5 // Pin yang terhubung ke LED
void setup() {
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(LED_PIN, OUTPUT); // Atur pin LED sebagai OUTPUT
myservo.attach(SERVO_PIN);
}
void loop() {
long duration, distance;
// Kirim sinyal ultrasonik
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Baca waktu pantulan ultrasonik
duration = pulseIn(ECHO_PIN, HIGH);
// Hitung jarak dalam cm
distance = duration * 0.034 / 2;
Serial.print("Jarak: ");
Serial.print(distance);
Serial.println(" cm");
// Membuat putaran servo bervariansi berdasarkan jaraknya
if (distance < 100) {
myservo.write(180); // Putaran maksimal jika jarak kurang dari 100 cm
} else if (distance < 200) {
myservo.write(120); // Putaran sedang jika jarak antara 100-200 cm
} else if (distance < 300) {
myservo.write(60); // Putaran kecil jika jarak antara 200-300 cm
} else {
myservo.write(0); // Kembalikan servo ke posisi awal jika jarak lebih dari 300 cm
}
digitalWrite(LED_PIN, HIGH); // Nyalakan LED jika jarak kurang dari 300 cm
delay(500); // Tunggu sebentar untuk memberikan waktu servo bergerak
digitalWrite(LED_PIN, LOW); // Matikan LED
delay(1000); // Tunggu sejenak sebelum mengukur lagi
}