#include <ESP32Servo.h>
const int pirPin = 27; // กำหนดขาเซ็นเซอร์ PIR
const int relayPin = 16; // กำหนดขารีเลย์
const int servoPin = 19; // กำหนดขาเซอร์โว
const int buzzerPin = 25; // กำหนดขาบuzzer
Servo myServo; // สร้างวัตถุเซอร์โว
void setup() {
Serial.begin(115200); // เริ่มต้น Serial
pinMode(pirPin, INPUT); // กำหนดขา PIR เป็น INPUT
pinMode(relayPin, OUTPUT); // กำหนดขารีเลย์เป็น OUTPUT
pinMode(buzzerPin, OUTPUT); // กำหนดขาบuzzerเป็น OUTPUT
myServo.attach(servoPin); // เชื่อมต่อเซอร์โวที่ขา
myServo.write(0); // ตั้งค่าเซอร์โวให้เริ่มที่ 0 องศา
digitalWrite(relayPin, LOW); // ตั้งค่ารีเลย์เริ่มต้นเป็น LOW (ปิด)
digitalWrite(buzzerPin, LOW); // ตั้งค่า buzzer เริ่มต้นเป็น LOW (ปิด)
}
void loop() {
int pirState = digitalRead(pirPin); // อ่านสถานะของ PIR
if (pirState == HIGH) { // ถ้ามีการเคลื่อนไหว
Serial.println("Motion detected!"); // แสดงข้อความใน Serial Monitor
digitalWrite(relayPin, HIGH); // เปิดรีเลย์
myServo.write(90); // หมุนเซอร์โวไปที่ 90 องศา
//tone(buzzerPin, 1000, 500); // เปิด buzzer สำหรับ 500 ms
delay(1000); // รอ 1 วินาที
} else { // ถ้าไม่มีการเคลื่อนไหว
Serial.println("No motion detected.");
digitalWrite(relayPin, LOW); // ปิดรีเลย์
myServo.write(0); // หมุนเซอร์โวกลับไปที่ 0 องศา
//noTone(buzzerPin); // ปิด buzzer
}
delay(100); // รอ 100 มิลลิวินาที
}