#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHT_PIN 5
#define BUZZER_PIN 7
#define redLED_PIN 6
#define greenLED_PIN 4
#define Relay_PIN 8
#define yellowLED_PIN 9
#define DHTTYPE DHT22
LiquidCrystal_I2C lcd(0x27, 16, 2);
DHT dht(DHT_PIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println("DHT Initialized ");
pinMode(BUZZER_PIN, OUTPUT);
pinMode(redLED_PIN, OUTPUT);
pinMode(greenLED_PIN, OUTPUT);
pinMode(Relay_PIN, OUTPUT);
pinMode(yellowLED_PIN, OUTPUT);
dht.begin();
lcd.init();
lcd.backlight();
}
void loop() {
// Phase 1: Checking
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Checking");
for (int i = 0; i < 4; ++i) {
lcd.print('.');
delay(500);
}
// Phase 2: Humidity and Temperature
float Humidity = dht.readHumidity();
float Temperature = dht.readTemperature();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Humidity: ");
lcd.print(Humidity);
lcd.print("%");
lcd.setCursor(0, 1);
lcd.print("Temperature: ");
lcd.print(Temperature);
lcd.print("C");
delay(2000);
// Existing if-else conditions from the original code
if (Humidity > 70 && Temperature > 30) {
Serial.println("Status: High Temp & Hum");
digitalWrite(redLED_PIN, LOW);
digitalWrite(greenLED_PIN, LOW);
digitalWrite(yellowLED_PIN, HIGH);
digitalWrite(Relay_PIN, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Humidity: ");
lcd.print(Humidity);
lcd.print("%");
lcd.setCursor(0, 1);
lcd.print("Temperature: ");
lcd.print(Temperature);
lcd.print("C");
lcd.setCursor(0, 2);
lcd.print("Emergency!");
delay(500); // Reduced delay within the high temp & hum block
for (int i = 0; i < 10; ++i) {
digitalWrite(yellowLED_PIN, HIGH);
tone(BUZZER_PIN, 1500, 50);
delay(100);
digitalWrite(yellowLED_PIN, LOW);
tone(BUZZER_PIN, 1000, 50);
delay(100);
}
} else if (Humidity < 30 && Temperature < 20) {
Serial.println("Status: Low Temp & Hum");
digitalWrite(redLED_PIN, LOW);
digitalWrite(greenLED_PIN, HIGH);
digitalWrite(yellowLED_PIN, LOW);
digitalWrite(Relay_PIN, LOW);
tone(BUZZER_PIN, 1500, 200);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Humidity: ");
lcd.print(Humidity);
lcd.print("%");
lcd.setCursor(0, 1);
lcd.print("Temperature: ");
lcd.print(Temperature);
lcd.print("C");
delay(500); // Reduced delay within the low temp & hum block
} else {
Serial.println("Status: Normal");
digitalWrite(redLED_PIN, HIGH);
digitalWrite(greenLED_PIN, LOW);
digitalWrite(yellowLED_PIN, LOW);
digitalWrite(Relay_PIN, LOW);
noTone(BUZZER_PIN);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Humidity: ");
lcd.print(Humidity);
lcd.print("%");
lcd.setCursor(0, 1);
lcd.print("Temperature: ");
lcd.print(Temperature);
lcd.print("C");
delay(1000); // Reduced delay within the normal block
}
// Phase 3: Status Checked
lcd.clear();
lcd.setCursor(0, 3);
lcd.print("Status Checked");
delay(2000); // Reduced delay after the status check
}