#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define PIR_PIN 2
#define DHT_PIN 3
#define LED_INTRUDER 4
#define LED_FIRE 5
#define BUZZER 6
#define DHT_TYPE DHT22
LiquidCrystal_I2C lcd(0x27, 16, 2);
DHT dht(DHT_PIN, DHT_TYPE);
const float FIRE_TEMP = 40.0;
void setup() {
pinMode(PIR_PIN, INPUT);
pinMode(LED_INTRUDER, OUTPUT);
pinMode(LED_FIRE, OUTPUT);
pinMode(BUZZER, OUTPUT);
lcd.init();
lcd.backlight();
dht.begin();
}
void loop() {
bool motionDetected = digitalRead(PIR_PIN);
float temp = dht.readTemperature();
// Reset outputs
digitalWrite(LED_INTRUDER, LOW);
digitalWrite(LED_FIRE, LOW);
digitalWrite(BUZZER, LOW);
lcd.setCursor(0, 0);
if (motionDetected) {
digitalWrite(LED_INTRUDER, HIGH);
digitalWrite(BUZZER, HIGH);
lcd.print("INTRUDER ALERT! ");
lcd.setCursor(0, 1);
lcd.print("Check Security ");
}
else if (temp >= FIRE_TEMP) {
digitalWrite(LED_FIRE, HIGH);
digitalWrite(BUZZER, HIGH);
lcd.print("FIRE WARNING! ");
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(temp);
lcd.print("C ");
}
else {
lcd.print("SYSTEM SAFE ");
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(temp);
lcd.print("C ");
}
delay(500);
}