#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <DHT.h>
#include <Servo.h>
DHT dht(2, DHT22);
LiquidCrystal_I2C lcd(0x27, 16, 2);
Servo mys;
#define lembap 4
#define kering 5
#define normal 6
bool has = false;
bool nhas = false;
bool lhas = false;
void setup() {
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Tool Setuping");
delay(1000);
lcd.clear();
dht.begin();
lcd.print("dht terpasang");
delay(1000);
lcd.clear();
mys.attach(3);
mys.write(0);
delay(500);
mys.write(180);
delay(500);
mys.write(0);
delay(500);
lcd.print("Servo terpasang");
delay(1000);
lcd.clear();
pinMode(lembap, OUTPUT);
pinMode(kering, OUTPUT);
pinMode(normal, OUTPUT);
digitalWrite(normal, HIGH);
digitalWrite(lembap, HIGH);
digitalWrite(kering, HIGH);
delay(200);
digitalWrite(lembap, LOW);
digitalWrite(kering, LOW);
digitalWrite(normal, LOW);
delay(200);
lcd.print("Led Terpasang");
delay(500);
lcd.clear();
}
void loop() {
float humidity = dht.readHumidity();
float temp = dht.readTemperature();
lcd.setCursor(0, 0);
lcd.print("Humidity : ");
lcd.print(humidity);
lcd.print("%");
lcd.setCursor(0, 1);
lcd.print("Temp : ");
lcd.print(temp);
lcd.print("%");
delay(2000);
lcd.clear();
if (humidity >= 60 && !has) {
digitalWrite(normal, LOW);
digitalWrite(kering, LOW);
digitalWrite(lembap, HIGH);
lcd.setCursor(0, 0);
lcd.print("Ruangan Terlalu");
lcd.setCursor(0, 1);
lcd.print("Lembap");
delay(1500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Membuka Jendela");
mys.write(180);
delay(1000);
lcd.clear();
has = true;
} else if (humidity < 60) {
has = false;
mys.write(0);
digitalWrite(lembap, LOW);
}
if ((humidity < 60 && humidity > 20) && !nhas) {
digitalWrite(kering, LOW);
digitalWrite(lembap, LOW);
digitalWrite(normal, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Kelembapan =");
lcd.setCursor(0, 1);
lcd.print("Normal");
delay(1500);
lcd.clear();
nhas = true;
} else if (humidity > 60 || humidity < 20) {
nhas = false;
digitalWrite(normal, LOW);
}
if (humidity <= 20 && !lhas) {
digitalWrite(normal, LOW);
lcd.setCursor(0, 0);
lcd.print("Ruangan Terlalu");
lcd.setCursor(0, 1);
lcd.print("Kering");
delay(1500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("menyalakan ");
lcd.setCursor(0, 1);
lcd.print("pelembap");
digitalWrite(kering, HIGH);
delay(1500);
lhas = true;
} else if (humidity > 20) {
lhas = false;
digitalWrite(kering, LOW);
}
}