#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 4
#define DHTTYPE DHT22
#define RED 26 // Red LED for critical or high humidity
#define GREEN 25 // Green LED for normal humidity
#define BLUE 27 // Blue LED for low humidity
#define BUZZER 19 // Buzzer
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
lcd.init();
lcd.backlight();
dht.begin();
pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(BLUE, OUTPUT);
pinMode(BUZZER, OUTPUT);
}
void loop() {
float temp = dht.readTemperature(); // Read temperature
float hum = dht.readHumidity(); // Read humidity data
if (isnan(temp) || isnan(hum)) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sensor Error");
return;
}
lcd.clear(); // Clear the LCD for new data
lcd.setCursor(0, 0);
lcd.print("Smart Humid Control");
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(temp);
lcd.print(" C");
lcd.setCursor(0, 2);
lcd.print("Room Humidity: ");
lcd.print(hum);
lcd.print(" %");
lcd.setCursor(0, 3);
lcd.print("Isa Red Carpio");
// Humidity levels
if (hum < 40.0) {
// Low humidity: Turn on humidifier
digitalWrite(BLUE, HIGH);
digitalWrite(GREEN, LOW);
digitalWrite(RED, LOW);
digitalWrite(BUZZER, HIGH);
} else if (hum >= 40.0 && hum <= 60.0) {
// Normal humidity
digitalWrite(GREEN, HIGH);
digitalWrite(BLUE, LOW);
digitalWrite(RED, LOW);
digitalWrite(BUZZER, LOW);
} else {
// High humidity: Turn off humidifier if on
digitalWrite(RED, HIGH);
digitalWrite(GREEN, LOW);
digitalWrite(BLUE, LOW);
digitalWrite(BUZZER, HIGH);
}
delay(2000); // Delay for 2 seconds before the next reading
}