#include <ESP32Servo.h>
const int pirPin = 13; // Pin untuk sensor PIR
const int servoPin = 15; // Pin untuk servo motor
Servo myServo; // Membuat objek servo
int pirState = LOW; // Menyimpan status PIR (LOW = tidak ada gerakan)
int motionDetected = 0; // Variabel untuk menyimpan pembacaan dari sensor PIR
void setup() {
pinMode(pirPin, INPUT); // Sensor PIR sebagai input
myServo.attach(servoPin); // Attach servo ke pin servoPin
myServo.write(0); // Servo dimulai di posisi 0 derajat
Serial.begin(115200); // Memulai komunikasi serial
}
void loop() {
// Membaca status sensor PIR
motionDetected = digitalRead(pirPin);
if (motionDetected == HIGH) { // Jika sensor PIR mendeteksi gerakan
if (pirState == LOW) { // Jika sebelumnya tidak ada gerakan
Serial.println("Gerakan terdeteksi!");
myServo.write(90); // Gerakkan servo ke 90 derajat
delay(2000); // Servo bertahan di posisi ini selama 2 detik
pirState = HIGH; // Update status PIR
}
} else {
if (pirState == HIGH) { // Jika gerakan tidak terdeteksi lagi
Serial.println("Tidak ada gerakan.");
myServo.write(0); // Kembalikan servo ke posisi 0 derajat
pirState = LOW; // Reset status PIR
}
}
delay(100); // Jeda untuk menghindari pembacaan yang terlalu cepat
}