#include <LiquidCrystal.h>
#include <DHT.h>
#define DHTPIN 2 // Pin connected to the DHT22 sensor
#define DHTTYPE DHT22 // DHT 22 (AM2302)
// Initialize the LCD
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
// Define the DHT sensor type and pin
#define DHTTYPE DHT22 // DHT22 can be used too
#define DHTPIN 2
DHT dht(DHTPIN, DHTTYPE);
// Relay pins
const int relayHumidifier = 3;
const int relayHeater = 4;
// Desired setpoints
float desiredHumidity = 85.0;
float desiredTemperature = 28.0;
void setup() {
lcd.begin(16, 2);
dht.begin();
// Initialize relay pins
pinMode(relayHumidifier, OUTPUT);
pinMode(relayHeater, OUTPUT);
// Ensure relays are off initially
digitalWrite(relayHumidifier, HIGH);
digitalWrite(relayHeater, HIGH);
lcd.print(" AUTO RH-TEMP. ");
delay(2000);
lcd.clear();
lcd.print(" CONTROL PROJECT ");
delay(1000);
lcd.clear();
lcd.print(" BY SAGAR VERMA ");
delay(2000);
lcd.clear();
lcd.print(" MTECH (PSPE) ");
delay(1000);
lcd.clear();
lcd.print(" GUIDED BY ");
delay(1000);
lcd.clear();
lcd.print("PANKAJ SIR");
delay(2000);
lcd.clear();
}
void loop() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
// Check if readings are valid
if (isnan(humidity) || isnan(temperature)) {
lcd.setCursor(2, 0);
lcd.print("Sensor Error");
return;
}
// Display the temperature and humidity on the LCD
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("%");
delay(1000); // Wait for 2 seconds before refreshing the data
// Control humidifier based on humidity
if (humidity < desiredHumidity) {
digitalWrite(relayHumidifier, LOW); // Turn on humidifier
} else {
digitalWrite(relayHumidifier, HIGH); // Turn off humidifier
}
// Control heater based on temperature
if (temperature < desiredTemperature) {
digitalWrite(relayHeater, LOW); // Turn on heater
} else {
digitalWrite(relayHeater, HIGH); // Turn off heater
}
delay(1000);
}