#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTPIN 2 // Pin for DHT22
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
const int ldrPin = A1; // Pin for LDR
// Initialize the LCD with I2C address 0x27
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
// Initialize serial communication
Serial.begin(9600);
// Initialize DHT sensor
dht.begin();
// Initialize LCD
lcd.init();
lcd.backlight(); // Turn on the LCD backlight
lcd.setCursor(0, 0);
lcd.print("Initializing...");
delay(2000); // Pause to show initialization message
}
void loop() {
// Read temperature and humidity from DHT22
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Read light intensity from LDR
int lightIntensity = analogRead(ldrPin);
// Display readings on Serial Monitor
Serial.print("Temp: ");
Serial.print(temperature);
Serial.print(" C, Humidity: ");
Serial.print(humidity);
Serial.print(" %, Light Intensity: ");
Serial.println(lightIntensity);
// Display readings on LCD screen
lcd.clear(); // Clear previous readings
lcd.setCursor(0, 0); // Set cursor to first row
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print("C");
lcd.setCursor(0, 1); // Set cursor to second row
lcd.print("Hum: ");
lcd.print(humidity);
lcd.print("%");
delay(2000); // Wait 2 seconds before updating
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Light: ");
lcd.print(lightIntensity);
delay(2000); // Wait 2 seconds before the next update
}