#include <LiquidCrystal.h>
#include <DHT.h>
// LCD pins: RS, E, D4, D5, D6, D7
LiquidCrystal lcd(9, 10, 11, 12, 13, A0);
// DHT sensor setup
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
// Ultrasonic sensor setup
#define TRIG_PIN 3
#define ECHO_PIN 4
// LEDs and buzzer
#define GREEN_LED 5
#define YELLOW_LED 6
#define RED_LED 7
#define BUZZER_PIN 8
void setup() {
// Initialize sensors and LCD
dht.begin();
lcd.begin(16, 2);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(GREEN_LED, OUTPUT);
pinMode(YELLOW_LED, OUTPUT);
pinMode(RED_LED, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
lcd.print("Interactive Display");
delay(2000);
lcd.clear();
}
void loop() {
// Read DHT sensor data
float temp = dht.readTemperature();
float humidity = dht.readHumidity();
// Read distance from ultrasonic sensor
long duration, distance;
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH);
distance = duration * 0.034 / 2; // Convert to cm
// Display data on LCD
lcd.setCursor(0, 0);
lcd.print("T: " + String(temp) + "C H: " + String(humidity) + "%");
lcd.setCursor(0, 1);
lcd.print("Dist: " + String(distance) + "cm");
// LED and buzzer logic
if (temp > 35 || temp < 15 || distance < 10 || distance > 100) {
// Critical condition: turn on red LED and buzzer
digitalWrite(RED_LED, HIGH);
digitalWrite(YELLOW_LED, LOW);
digitalWrite(GREEN_LED, LOW);
digitalWrite(BUZZER_PIN, HIGH);
} else if (temp >= 25 && temp <= 35) {
// Normal condition: turn on green LED
digitalWrite(RED_LED, LOW);
digitalWrite(YELLOW_LED, LOW);
digitalWrite(GREEN_LED, HIGH);
digitalWrite(BUZZER_PIN, LOW);
} else {
// Moderate condition: turn on yellow LED
digitalWrite(RED_LED, LOW);
digitalWrite(YELLOW_LED, HIGH);
digitalWrite(GREEN_LED, LOW);
digitalWrite(BUZZER_PIN, LOW);
}
delay(1000); // Delay for readability
}