/**
   ESP32 + DHT22 Example for Wokwi
   
   https://wokwi.com/arduino/projects/322410731508073042
*/
#include "DHT.h"
#define DHTPIN 15
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE); 


#include <LiquidCrystal_I2C.h>
#define I2C_ADDR    0x27
#define LCD_COLUMNS 20
#define LCD_LINES   4

LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);

int ledY = 14;
int ledG = 12;
int ledR = 13;
int ledY2 = 25;
int ledG2 = 26;
int ledR2 = 27;

float h ;
float t;


void setup() {
  Serial.begin(115200);
  dht.begin();

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

  pinMode(ledR, OUTPUT);
  pinMode(ledG, OUTPUT);
  pinMode(ledY, OUTPUT);
  pinMode(ledR2, OUTPUT);
  pinMode(ledG2, OUTPUT);
  pinMode(ledY2, OUTPUT);
}

void loop() {
  
  delay(2000); 
  lcd.setCursor(0, 0);
  lcd.print("Monitor Comfort Zone");

  h = dht.readHumidity();
  // Read temperature as Celsius (the default)
  t = dht.readTemperature();
  
  Serial.print(F("Humidity: ")); 
  Serial.print(h);
  Serial.print(F("%  Temperature: " ));
  Serial.print(t);
  Serial.println(F("°C "));
 
  lcd.setCursor(0, 2);
  lcd.print("Temp > ");
  lcd.setCursor(7, 2);
  lcd.print(t);
  lcd.print(" C");

  lcd.setCursor(0, 3);
  lcd.print("Humidity > ");
  lcd.setCursor(11, 3);
  lcd.print(h);
  lcd.print(" %hr");
 
  
  if (h >= 70) {
    digitalWrite(ledR, HIGH);
    digitalWrite(ledG,LOW);
    digitalWrite(ledY, LOW);
  }
  else if(h >= 40) {
    digitalWrite(ledR, LOW);
    digitalWrite(ledG,HIGH);
    digitalWrite(ledY, LOW);
  }
  else{
    digitalWrite(ledR, LOW);
    digitalWrite(ledG,LOW);
    digitalWrite(ledY, HIGH);
  }
  
  if (t >= 24) {
    digitalWrite(ledR2, HIGH);
    digitalWrite(ledG2,LOW);
    digitalWrite(ledY2, LOW);
  }
  else if(t >= 20) {
    digitalWrite(ledR2, LOW);
    digitalWrite(ledG2,HIGH);
    digitalWrite(ledY2, LOW);
  }
  else{
    digitalWrite(ledR2, LOW);
    digitalWrite(ledG2,LOW);
    digitalWrite(ledY2, HIGH);
  }
  
}