#include <Servo.h> // Import pustaka Servo
Servo myServo; // Membuat objek servo
const int pirPin = 2; // Pin sensor PIR
int motionState = 0; // Variabel untuk menyimpan status gerakan
bool isMotionDetected = false; // Status apakah ada gerakan
int servoPosition = 0; // Variabel posisi servo
void setup() {
pinMode(pirPin, INPUT); // Atur pin PIR sebagai input
myServo.attach(9); // Hubungkan servo ke pin 9
myServo.write(0); // Posisi awal servo di 0 derajat
Serial.begin(9600); // Untuk debugging
}
void loop() {
motionState = digitalRead(pirPin); // Membaca status dari sensor PIR
if (motionState == HIGH) { // Jika ada gerakan terdeteksi
if (!isMotionDetected) { // Hanya memulai pergerakan jika gerakan baru terdeteksi
Serial.println("Gerakan terdeteksi!"); // Menampilkan keterangan gerakan
isMotionDetected = true;
// Servo bergerak ke 90 derajat
myServo.write(90);
delay(1000); // Tunggu 1 detik
// Servo bergerak ke 180 derajat
myServo.write(180);
delay(1000); // Tunggu 1 detik
}
} else { // Jika tidak ada gerakan
if (isMotionDetected) { // Kembali ke posisi 0 jika gerakan berhenti
Serial.println("Tidak ada gerakan."); // Menampilkan keterangan tidak ada gerakan
myServo.write(0); // Servo kembali ke posisi 0 derajat
isMotionDetected = false; // Reset status gerakan
}
}
delay(100); // Delay kecil untuk membaca sensor secara stabil
}