#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include "DHT.h"
int led1 = 13;
int led2 = 12;
int led3 = 11;
LiquidCrystal_I2C lcd(0x27,16,4);
// Deklarasi PIN DHT11 //
#define DHTPIN 2
// Tipe sensor yang digunakan (DHT11 atau DHT22) //
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

// Membuat ikon kelelembaban // 
byte suhu[8] =
{
  B00100,
  B01010,
  B01010,
  B01110,
  B11111,
  B11111,
  B01110,
  B00000
};

// Membuat ikon kelelembaban // 
byte kelembaban[8] =
{
  B00100,
  B01010,
  B01010,
  B10001,
  B10001,
  B10001,
  B01110,
  B00000
};

void setup() {
  lcd.init();
  lcd.backlight();
  lcd.createChar(1, kelembaban);
  lcd.createChar(2, suhu);
  lcd.setCursor(0,0);
  lcd.print("Dwi.Ovalia");
  lcd.setCursor(0,1);
  lcd.print("TeknikElektro22");
  dht.begin();
  delay(2000);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.write(2);
  lcd.print(" Suhu: ");
  lcd.setCursor(0,1);
  lcd.write(1);
  lcd.print(" Lembab: ");
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
}

void loop() {
  // Membaca kelembaban //
  float h = dht.readHumidity();
  // Membaca suhu dalam satuan Celsius //
  float t = dht.readTemperature();
  // Membaca suhu dalam satuan Fahrenheit //
  float f = dht.readTemperature(true);

  if (t<=24){
    digitalWrite(13, HIGH);
    digitalWrite(12, LOW);
    digitalWrite(11, LOW);
  }

  if (t>=24){
    digitalWrite(13, LOW);
    digitalWrite(12, HIGH);
    digitalWrite(11, LOW);
  }

  if (t>=29){
    digitalWrite(13, LOW);
    digitalWrite(12, LOW);
    digitalWrite(11, HIGH);
  }

  // Menampilkan pesan Error jika sensor tidak terbaca //
  if (isnan(h) || isnan(t) || isnan(f)) {
    lcd.setCursor(8,0);
    lcd.print("Error   ");
    lcd.setCursor(10,1);
    lcd.print("Error   ");
    return;
  }

  
  float hif = dht.computeHeatIndex(f, h);
  float hic = dht.computeHeatIndex(t, h, false);

  // Menampilkan data ke LCD //
  lcd.setCursor(8,0);
  lcd.print(t,1);
  lcd.print((char)223);
  lcd.print("C     ");
  lcd.setCursor(10,1);
  lcd.print(h,0);
  lcd.print("%     ");

  // Jeda Waktu, ubah menjadi 2000 untuk DHT22//
  delay(2000);
}