/**
   ESP32 + DHT22 Example for Wokwi
   
   https://wokwi.com/arduino/projects/322410731508073042
*/

#include "DHTesp.h" /*memasukan DHTesp*/
#include <LiquidCrystal_I2C.h>/*memasukan liquid crystal i2c*/

const int DHT_PIN = 15;/*memberikan konstanta pin 15*/

int lcdColumns = 16;/*penetapan lcd kolom pin 16*/
int lcdRows = 2;/*penetepan lcd baris pada pin 2*/
LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows);

DHTesp dhtSensor;

void setup() {/*put your code in here*/
  Serial.begin(115200);/*mengirimkan data ke port serial*/
  dhtSensor.setup(DHT_PIN, DHTesp::DHT22);/*menetapkan pin setup pada dht22*/

  // initialize LCD
  lcd.init();/*inisialisasi lcd*/
  // turn on LCD backlight                      
  lcd.backlight();/*menghidupkan backlight lcd*/
}

void loop() {/*menjalankan program yang sudah dibuat*/
  TempAndHumidity  data = dhtSensor.getTempAndHumidity();/*data suhu dan kelembaban*/
  Serial.println("Temp: " + String(data.temperature, 2) + "°C"); /*menampilkan nilai suhu*/
  Serial.println("Humidity: " + String(data.humidity, 1) + "%"); /*menampilkan nilai kelembaban*/
  Serial.println("---");/*menampilkan garis ---*/
  delay(1000); /*memberi waktu delay*/

  // set cursor to first column, first row
  lcd.setCursor(0, 0);/*mengatur lcd bagian atas*/
  // print message
  lcd.print("Temp: " + String(data.temperature, 2) + " C"); /*menampilkan teks suhu*/
  delay(1000); /*memberi waktu delay*/
  // clears the display to print new message
  lcd.clear(); /*mengahpus tampilan lcd*/
  // set cursor to first column, second row
  lcd.setCursor(0,1); /*mengatur lcd bagian bawah*/
  
  delay(1000); /*memberi waktu delay*/
  lcd.clear(); /*menghapus tampilan lcd*/
  if (data.temperature < 20){ /*memasukan fungsi if jika suhu dibawah 20*/
  lcd.print("Suhu Dingin"); /*menampilkan teks suhu dingin pada lcd*/
  }
    else if (data.temperature > 32){ /*memasukan fungsi if bila suhu lebih dari 32*/
  lcd.print("Suhu Panas"); /*menampilkan teks suhu panas pada lcd*/
  }
  
  else if (data.temperature  > 20 < 32){ /*memasukan fungsi if bila suhu berada diantara 20 dan 32*/
  lcd.print("Suhu Normal"); /*menampilkan teks suhu normal pada lcd*/
  }

  delay(1000); /*memberi waktu delay*/
}