#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
// Pin and sensor type configuration
#define DHTPIN 2 // DHT22 data pin connected to Arduino digital pin D2
#define DHTTYPE DHT22 // We're using the DHT22 sensor
// Initialize DHT sensor
DHT dht(DHTPIN, DHTTYPE);
// Initialize the LCD - I2C address 0x27, 16 characters, 2 lines
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
dht.begin(); // Start reading from DHT sensor
lcd.begin(16, 2); // Start LCD
lcd.backlight(); // Turn on LCD backlight
lcd.setCursor(0, 0);
lcd.print("Initializing...");
delay(2000);
lcd.clear();
}
void loop() {
float temperature = dht.readTemperature(); // Read temperature in Celsius
float humidity = dht.readHumidity(); // Read humidity
// Handle sensor read failure
if (isnan(temperature) || isnan(humidity)) {
lcd.setCursor(0, 0);
lcd.print("Sensor error!");
delay(2000);
return;
}
// Display temperature
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature, 1); // one decimal place
lcd.print((char)223); // degree symbol
lcd.print("C");
// Display humidity
lcd.setCursor(0, 1);
lcd.print("Humidity: ");
lcd.print(humidity, 1);
lcd.print(" %");
delay(2000); // Update every 2 seconds
}