#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
Wire.begin();
Serial.begin(9600);
dht.begin(); // Initialize DHT22 sensor
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Temp: "); // Changed println() to print()
lcd.setCursor(0, 1);
lcd.print("Humidity: "); // Changed println() to print()
}
void loop() {
delay(2000); // Wait 2 seconds between readings
float tmp = dht.readTemperature();
float hum = dht.readHumidity();
if (isnan(tmp) || isnan(hum)) {
Serial.println("Failed to read from DHT sensor!");
lcd.setCursor(0, 0);
lcd.print("Error reading data");
return;
}
// sunny condition
if (tmp >= 20 && hum < 85) {
String message = "weather is normal";
Serial.println(message);
lcd.setCursor(0, 2);
lcd.print(message);
lcd.setCursor(0, 3);
lcd.print("go for a walk");
// Changed println() to print()
}
// rainy condition
else if (hum > 85 && tmp > 0) {
Serial.println("Possible Rain");
lcd.setCursor(0, 2);
lcd.print("Rain Possible");
lcd.setCursor(0, 3);
lcd.print("Grab umbrellas");
}
// Estimation for Snow
else if (hum > 70 && tmp <= 0) {
if (tmp <= 0 && hum >=85) {
lcd.setCursor(0, 2);
lcd.print("Warning: Snowstorm");
lcd.setCursor(0, 3);
lcd.print("Stay Indoors!");
Serial.println("Snowstorm Detected!");
}else {
Serial.println("Possible Snow");
lcd.setCursor(0, 2);
lcd.print("Snow Possible");
lcd.setCursor(0, 3);
lcd.print("Stay indoors");
}
}
else{
Serial.println("Possible Snow line31");
}
lcd.setCursor(6, 0);
lcd.print(tmp);
lcd.setCursor(11, 0);
lcd.print("C");
lcd.setCursor(10, 1);
lcd.print(hum);
}