#include <ESP32Servo.h>

const int trigPin = 2; // Pin trigger ultrasonik
const int echoPin = 15; // Pin echo ultrasonik
Servo myservo;          // Objek servo

void setup() {
  Serial.begin(115200);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  myservo.attach(12); // Hubungkan servo ke pin 2
}

void loop() {
  long duration, distance;

  // Mengirim pulsa ultrasonik
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  // Menerima waktu pantulan
  duration = pulseIn(echoPin, HIGH);

  // Menghitung jarak berdasarkan waktu pantulan
  distance = (duration / 2) / 29.1;

  // Memutar servo berdasarkan jarak
if (distance < 200) {
    // Jika jarak kurang dari 100 cm (1 meter), aktifkan servo ke sudut tertentu
    myservo.write(45); // Contoh: Memutar servo ke sudut 45 derajat
    Serial.println("Aktifkan servo karena jarak kurang dari 1 meter!");
  } else {
    // Jika jarak di luar rentang, berhenti atau lakukan sesuatu yang sesuai
    myservo.write(90); // Berhenti di tengah
    Serial.println("Jarak di luar rentang!");
  }

  delay(500); // Delay untuk membatasi frekuensi pembacaan
}