#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>

#define DHTPIN 4
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

// LCD address 0x27, 16 columns, 2 rows
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {

  Serial.begin(115200);

  Wire.begin(13,14);   // SDA = 13 , SCL = 14

  lcd.init();
  lcd.backlight();

  dht.begin();

  lcd.setCursor(0,0);
  lcd.print("Weather System");
  delay(2000);
  lcd.clear();
}

void loop() {

  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();

  if (isnan(humidity) || isnan(temperature)) {
    lcd.setCursor(0,0);
    lcd.print("Sensor Error   ");
    return;
  }

  // Display Temperature
  lcd.setCursor(0,0);
  lcd.print("Temp:");
  lcd.print(temperature);
  lcd.print((char)223); // degree symbol
  lcd.print("C ");

  // Display Status
  lcd.setCursor(0,1);

  if(temperature > 35){
    lcd.print("Status: HOT   ");
  }
  else if(temperature > 25){
    lcd.print("Status:NORMAL ");
  }
  else{
    lcd.print("Status: COLD  ");
  }

  delay(2000);
}