#include <Wire.h>
#include <DHT.h>
#include <NewPing.h>
#include <LiquidCrystal_I2C.h>
// Pin Definitions
#define PIR_PIN 12 // PIR sensor pin
#define DHT_PIN 13 // DHT sensor pin
#define DHT_TYPE DHT11 // DHT11 or DHT22
#define TRIG_PIN 14 // Ultrasonic sensor trigger pin
#define ECHO_PIN 27 // Ultrasonic sensor echo pin
// Sensors
DHT dht(DHT_PIN, DHT_TYPE);
NewPing sonar(TRIG_PIN, ECHO_PIN, 400); // Max distance 400 cm
// LCD
LiquidCrystal_I2C lcd(0x27, 20, 4); // I2C LCD address
// Variables
float humidity, tempC;
unsigned int distance;
void setup() {
Serial.begin(115200);
// Initialize sensors
dht.begin();
pinMode(PIR_PIN, INPUT);
// Initialize LCD
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Initializing...");
delay(1000); // Delay for setup
lcd.clear();
}
void loop() {
// Read PIR sensor
bool motionDetected = digitalRead(PIR_PIN);
// Log PIR status
Serial.print("PIR Motion Detected: ");
Serial.println(motionDetected ? "Yes" : "No");
// Read DHT sensor
readDHTSensor();
// Measure distance using ultrasonic sensor
distance = sonar.ping_cm();
logDistance(distance);
// Update LCD with distance and motion status
updateLCD(motionDetected);
// Delay between readings
delay(2000);
}
void readDHTSensor() {
humidity = dht.readHumidity();
tempC = dht.readTemperature();
if (isnan(humidity) || isnan(tempC)) {
Serial.println("Failed to read from DHT sensor!");
} else {
Serial.print("Temp: ");
Serial.print(tempC);
Serial.print("C, Humidity: ");
Serial.print(humidity);
Serial.println("%");
lcd.setCursor(0, 0);
lcd.print("T:");
lcd.print(tempC);
lcd.print("C H:");
lcd.print(humidity);
lcd.print("% "); // Extra spaces to clear old data
}
}
void logDistance(unsigned int distance) {
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
lcd.setCursor(0, 1);
lcd.print("Dist: ");
lcd.print(distance);
lcd.print("cm "); // Extra spaces to clear old data
}
void updateLCD(bool motionDetected) {
lcd.setCursor(0, 2);
if (motionDetected) {
lcd.print("Motion Detect ");
} else {
lcd.print("No Motion ");
}
}