#include <ESP32Servo.h>
const int servoPin = 18;
const int pirPin = 15;
Servo servo;
unsigned long startTime = 0;
bool isMoving = false;
void setup() {
servo.attach(servoPin); // Inisialisasi servo
pinMode(pirPin, INPUT);
Serial.begin(115200);
}
void loop() {
int pirState = digitalRead(pirPin);
if (pirState == HIGH && !isMoving) {
// Jika ada pergerakan dan servo tidak bergerak, mulai gerakan
startTime = millis();
isMoving = true;
servo.write(360); // Kecepatan maksimum searah jarum jam
Serial.println("Ada pergerakan, servo berputar.");
}
// if (isMoving && (millis() - startTime >= 5000)) {
if (isMoving && (millis() - startTime >= 5000)) {
// Jika sudah 10 detik, hentikan gerakan
servo.write(0); // Posisi netral, servo berhenti
isMoving = false;
Serial.println("Servo berhenti setelah 10 detik.");
}
if (pirState == LOW && !isMoving) {
Serial.println("Tidak ada pergerakan, servo berhenti.");
servo.write(0); // Posisi netral, servo berhenti
}
delay(20); // Delay kecil untuk polling sensor PIR
}