#include <LiquidCrystal.h>
#include <DHT.h>
// pin connections
#define DHTPIN 8 // DHT sensor pin
#define DHTTYPE DHT22 // DHT sensor type
#define RS_PIN 7 // LCD RS pin
#define E_PIN 6 // LCD enable pin
#define D4_PIN 5 // LCD D4 pin
#define D5_PIN 4 // LCD D5 pin
#define D6_PIN 3 // LCD D6 pin
#define D7_PIN 2 // LCD D7 pin
// LED pins
#define RED_LED 10 // Red LED pin
#define GREEN_LED 11 // Green LED pin
#define BLUE_LED 12 // Blue LED pin
// Initialisation of DHT sensor
DHT dht(DHTPIN, DHTTYPE);
// Initialize the LCD
LiquidCrystal lcd(RS_PIN, E_PIN, D4_PIN, D5_PIN, D6_PIN, D7_PIN);
void setup() {
// Start the serial communication
Serial.begin(9600);
// Initialize the DHT sensor
dht.begin();
// Initialize the LCD
lcd.begin(16, 2);
lcd.print("Initializing...");
delay(500);
lcd.clear();
// Initialize the LED pins as outputs
pinMode(RED_LED, OUTPUT);
pinMode(GREEN_LED, OUTPUT);
pinMode(BLUE_LED, OUTPUT);
}
void loop() {
// Read humidity and temperature
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
// Check if any reads failed
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Print temperature and humidity values to serial monitor
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print(" %\t Temperature: ");
Serial.println(temperature);
// Display temperature and humidity on 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(" %");
// LEDs lights based on temperature range
if (temperature > 30) {
digitalWrite(RED_LED, HIGH);
digitalWrite(GREEN_LED, LOW);
digitalWrite(BLUE_LED, LOW);
} else if (temperature >= 20 && temperature <= 30) {
digitalWrite(RED_LED, LOW);
digitalWrite(GREEN_LED, HIGH);
digitalWrite(BLUE_LED, LOW);
} else if (temperature < 20) {
digitalWrite(RED_LED, LOW);
digitalWrite(GREEN_LED, LOW);
digitalWrite(BLUE_LED, HIGH);
}
// Delay
delay(2500);
}