#include <LiquidCrystal.h>
#include <DHT.h>
#define LDR_DIGITAL_PIN 12 // LDR digital pin
#define TRIG_PIN 10 // HC-SR04 TRIG pin
#define ECHO_PIN 11 // HC-SR04 ECHO pin
#define DHTPIN 8 // DHT22 sensor pin
#define PIR_PIN 13 // PIR motion sensor pin
LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // RS, E, D4, D5, D6, D7
DHT dht(DHTPIN, DHT22);
void setup() {
pinMode(LDR_DIGITAL_PIN, INPUT); // Set LDR digital pin as input
pinMode(TRIG_PIN, OUTPUT); // Set TRIG pin as output
pinMode(ECHO_PIN, INPUT); // Set ECHO pin as input
pinMode(PIR_PIN, INPUT); // Set PIR pin as input
dht.begin();
lcd.begin(16, 2);
lcd.print("Sensor Test"); // Display initializing message
delay(2000); // Wait for 2 seconds before clearing the display
lcd.clear();
}
void loop() {
displayLDRReading();
delay(2000); // Display LDR reading for 2 seconds
displayDistanceReading();
delay(2000); // Display distance reading for 2 seconds
displayDHTReading();
delay(2000); // Display DHT22 reading for 2 seconds
displayPIRStatus();
delay(2000); // Display PIR status for 2 seconds
}
void displayLDRReading() {
int ldrValue = digitalRead(LDR_DIGITAL_PIN); // Read LDR digital value
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("LDR: ");
if (ldrValue == LOW) {
lcd.print("Bright");
} else {
lcd.print("Dark");
}
}
void displayDistanceReading() {
float distance = getDistance(); // Get distance from ultrasonic sensor
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Distance: ");
lcd.print(distance);
lcd.print(" cm");
}
void displayDHTReading() {
float humidity = dht.readHumidity(); // Read humidity from DHT22 sensor
float temperature = dht.readTemperature(); // Read temperature from DHT22 sensor in Celsius
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Humidity: ");
lcd.print(humidity);
lcd.print(" %");
}
void displayPIRStatus() {
int pirState = digitalRead(PIR_PIN); // Read PIR sensor state
lcd.clear();
lcd.setCursor(0, 0);
if (pirState == HIGH) {
lcd.print("PIR Active");
} else {
lcd.print("No Motion");
}
}
float getDistance() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
float duration = pulseIn(ECHO_PIN, HIGH);
return (duration * 0.0343) / 2.0; // Calculate distance in cm
}