#include <LiquidCrystal_I2C.h>
#include <Servo.h>
#include <DHT.h>
#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
//#include "RTClib.h"
//RTC_DS1307 rtc;
Servo myservo;
//char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
const int buzzer = 3;
const int relay = 5;
const int led1 = 6;
const int led2 = 7;
const int led3 = 8;
const int led4 = 9;
const int led5 = 10;
const int led6 = 11;
const int servo = 12;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  Serial.println("kontrol relay dengan sensor suhu");
  lcd.begin(16, 2);
  dht.begin();
  pinMode(relay, OUTPUT);
  pinMode(buzzer, OUTPUT);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
  myservo.attach(11);
}
void loop() {
  // put your main code here, to run repeatedly:
  float t = dht.readTemperature(); //menghitung suhu
  float h = dht.readHumidity();
  delay(1000);
if( t >= 24){
    digitalWrite(relay, HIGH);
    digitalWrite(buzzer, HIGH);
    digitalWrite(led1, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    digitalWrite(led4, HIGH);
    digitalWrite(led5, HIGH);
    myservo.write(180);
    delay(1000);
    myservo.write(0);
    delay(100);
    //Menampilkan di LCD
  lcd.setCursor(0,0);
  lcd.println("Suhu=");
  lcd.print(t);
  lcd.println("°C");
  lcd.setCursor(0,1);
  lcd.println("Lembab=");
  lcd.print(h);
  lcd.println("%");
//Menampilkan di serial monitor
  Serial.println("Suhu = ");
  Serial.print(t);
  Serial.println("°C");
  Serial.println("Kelembaban = ");
  Serial.print(h);
  Serial.println("%");
 }else{
    digitalWrite(relay, LOW);
    digitalWrite(buzzer, LOW);
    digitalWrite(led1, LOW);
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
    digitalWrite(led6, HIGH);
    myservo.write(0);
    delay(100);
    //Menampilkan di LCD
  lcd.setCursor(0,0);
  lcd.println("Suhu=");
  lcd.print(t);
  lcd.println("°C");
  lcd.setCursor(0,1);
  lcd.println("Lembab=");
  lcd.print(h);
  lcd.println("%");
//Menampilkan di serial monitor
  Serial.println("Suhu = ");
  Serial.print(t);
  Serial.println("°C");
  Serial.println("Kelembaban = ");
  Serial.print(h);
  Serial.println("%");
}
delay(1000);
Serial.print("Suhu: ");
Serial.print(t);
Serial.println("°C");
}