#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// ตั้งค่าหน้าจอ LCD1602 ที่ใช้ I2C address 0x27
LiquidCrystal_I2C lcd(0x27, 16, 2);
// กำหนดพินสำหรับเซ็นเซอร์ PIR
const int pirPin = 13;
// กำหนดพินสำหรับเซ็นเซอร์ HC-SR04
const int trigPin = 26;
const int echoPin = 27;
int pirState = LOW;
int val = 0;
long duration;
int distance;
void setup() {
// เริ่มการติดต่อกับ LCD
lcd.begin();
lcd.backlight();
// กำหนดพินสำหรับเซ็นเซอร์ PIR เป็น input
pinMode(pirPin, INPUT);
// กำหนดพินสำหรับเซ็นเซอร์ HC-SR04
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// เริ่ม Serial Monitor สำหรับการดีบัก
Serial.begin(115200);
}
void loop() {
val = digitalRead(pirPin); // อ่านค่าจากเซ็นเซอร์ PIR
if (val == HIGH) { // ถ้าพบการเคลื่อนไหว
if (pirState == LOW) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Intruder Alert!"); // แสดงข้อความเตือนที่หน้าจอ
// วัดระยะทางจากเซ็นเซอร์ HC-SR04
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
lcd.setCursor(0, 1);
lcd.print("Dist: ");
lcd.print(distance);
lcd.print(" cm");
// แสดงผลใน Serial Monitor สำหรับการดีบัก
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
pirState = HIGH;
}
} else {
if (pirState == HIGH) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("All Clear");
// แสดงผลใน Serial Monitor สำหรับการดีบัก
Serial.println("All Clear");
pirState = LOW;
}
}
}