#include <DHT.h>
#include <LiquidCrystal_I2C.h>
#define DHT_SENSOR_PIN 15
#define DHT_SENSOR_TYPE DHT22
DHT sensor(DHT_SENSOR_PIN, DHT_SENSOR_TYPE);
LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 16, 2);
byte TemperatureIcon[] = {
  B01110, B01011, B01010, B01011, B01110, B11111, B11111, B01110
};
byte degreesC[] = {
  B11100, B10100, B11100, B00000, B00000, B00000, B00000, B00000
};
byte highIcon[] = {
  B00000, B00000, B00001, B00001, B00101, B00101, B10101, B10101
};
byte lowIcon[] = {
  B00000, B00000, B00000, B00000, B00000, B00000, B10000, B10000
};
byte idealIcon[] = {
  B00000, B00000, B00000, B00000, B00100, B00100, B10100, B10100
};
byte humidityIcon[] = {
  B00100, B01110, B01110, B11111, B11111, B11111, B01110, B00000
};
void setup() {
  lcd.init();
  lcd.backlight();
  lcd.createChar(0, degreesC);
  lcd.createChar(1, TemperatureIcon);
  lcd.createChar(2, lowIcon); 
  lcd.createChar(3, idealIcon);
  lcd.createChar(4, highIcon);
  lcd.createChar(5, humidityIcon);
  Serial.begin(115200);
  sensor.begin();  
}
void loop() {
  delay(2000);
  int temperature = sensor.readTemperature();
  int humidity = sensor.readHumidity();
  String stateHumidity;
  String stateTemperature;
  temperature = random(15,40);
  humidity = random(50,90);
  if(temperature < 18){
    stateTemperature = "Low  ";
    lcd.setCursor(0,1);
    lcd.write(2);
  }
  if(temperature >= 18 && temperature <= 24){
    stateTemperature = "Ideal";
    lcd.setCursor(0,1);
    lcd.write(3);
  }
  if(temperature > 24){
    stateTemperature = "High ";
    lcd.setCursor(0,1);
    lcd.write(4);
  }
  
  if(humidity < 60){
    stateHumidity = "Low  ";
    lcd.setCursor(10,1);
    lcd.write(2);
  }
  if(humidity >= 60 && humidity <= 80){
    stateHumidity = "Ideal";
    lcd.setCursor(10,1);
    lcd.write(3);
  }
  if(humidity > 80){
    stateHumidity = "High ";
    lcd.setCursor(10,1);
    lcd.write(4);
  }
    
  lcd.setCursor(0, 0);
  lcd.write(1);
  lcd.print("T:");
  lcd.print(temperature);
  lcd.setCursor(5,0);
  lcd.write(0);
  lcd.print("C");
  
  lcd.setCursor(10, 0);
  lcd.write(5);
  lcd.print("H:");
  lcd.print(humidity);
  
  lcd.setCursor(1, 1);
  lcd.print(stateTemperature);
  
  lcd.setCursor(11, 1);
  lcd.print(stateHumidity);
  delay(2000);
}