#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTPIN 8
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
Serial.println("Kipas Otomatis");
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Aktifkan backlight LCD
dht.begin();
pinMode(13, OUTPUT);
}
void loop() {
float t = dht.readTemperature();
float h = dht.readHumidity();
String kondisiSuhu;
String kondisiKelembapan;
String kecepatanKipas;
// Klasifikasi suhu
if (t <= 20) {
kondisiSuhu = "Dingin";
} else if (t > 20 && t <= 25) {
kondisiSuhu = "Normal";
} else {
kondisiSuhu = "Panas";
}
// Klasifikasi kelembapan
if (h <= 60) {
kondisiKelembapan = "Rendah";
} else if (h > 60 && h <= 70) {
kondisiKelembapan = "Normal";
} else {
kondisiKelembapan = "Tinggi";
}
// Inferensi kecepatan kipas berdasarkan suhu dan kelembapan
if (kondisiSuhu == "Dingin" && kondisiKelembapan == "Rendah") {
kecepatanKipas = "Lambat";
} else if (kondisiSuhu == "Dingin" && kondisiKelembapan == "Normal") {
kecepatanKipas = "Lambat";
} else if (kondisiSuhu == "Dingin" && kondisiKelembapan == "Tinggi") {
kecepatanKipas = "Cepat";
} else if (kondisiSuhu == "Normal" && kondisiKelembapan == "Rendah") {
kecepatanKipas = "Lambat";
} else if (kondisiSuhu == "Normal" && kondisiKelembapan == "Normal") {
kecepatanKipas = "Lambat";
} else if (kondisiSuhu == "Normal" && kondisiKelembapan == "Tinggi") {
kecepatanKipas = "Cepat";
} else if (kondisiSuhu == "Panas" && kondisiKelembapan == "Rendah") {
kecepatanKipas = "Lambat";
} else if (kondisiSuhu == "Panas" && kondisiKelembapan == "Normal") {
kecepatanKipas = "Cepat";
} else if (kondisiSuhu == "Panas" && kondisiKelembapan == "Tinggi") {
kecepatanKipas = "Cepat";
}
// Menyalakan/mematikan kipas berdasarkan kecepatan
if (kecepatanKipas == "Cepat") {
digitalWrite(13, HIGH); // Kipas menyala
} else {
digitalWrite(13, LOW); // Kipas mati atau lambat
}
// Menampilkan hasil di LCD
lcd.setCursor(0, 0);
lcd.print("Suhu: ");
lcd.print(t);
lcd.print(" C ");
lcd.setCursor(0, 1);
lcd.print("Lembab: ");
lcd.print(h);
lcd.print(" % ");
// Menampilkan hasil di Serial Monitor
Serial.print("Suhu = ");
Serial.print(t);
Serial.print(" C, Kelembapan = ");
Serial.print(h);
Serial.print(" %, Kipas = ");
Serial.println(kecepatanKipas);
delay(2000); // Delay 2 detik sebelum pembacaan berikutnya
}