#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT22
#define RAINPIN 3
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.init();
lcd.backlight();
dht.begin();
pinMode(RAINPIN, INPUT);
lcd.setCursor(0, 0);
lcd.print("Starting...");
delay(2000);
lcd.clear();
}
void loop() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
int rain = digitalRead(RAINPIN);
if (isnan(humidity) || isnan(temperature)) {
lcd.setCursor(0, 0);
lcd.print("DHT Error! ");
lcd.setCursor(0, 1);
lcd.print("Rain: ");
lcd.print(rain == HIGH ? "No" : "Yes");
delay(2000);
lcd.clear();
return;
}
lcd.setCursor(0, 0);
lcd.print("T:");
lcd.print(temperature, 1);
lcd.print("C H:");
lcd.print(humidity, 0);
lcd.print("% ");
lcd.setCursor(0, 1);
lcd.print("Rain: ");
lcd.print(rain == HIGH ? "No" : "Yes");
lcd.print(" ");
delay(2000);
}