#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <DHT.h>
// Pin definisi
#define DHTPIN 2
#define RELAYPIN 3
// Tipe sensor
#define DHTTYPE DHT22
// Inisialisasi sensor DHT
DHT dht(DHTPIN, DHTTYPE);
// Inisialisasi LCD, alamat I2C bisa berbeda, tergantung modul yang digunakan
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
// Memulai komunikasi serial
Serial.begin(9600);
Serial.println("Kipas Otomatis");
// Memulai sensor DHT
dht.begin();
// Memulai LCD
lcd.init(); // Menggunakan init() bukan begin()
lcd.backlight();
// Mengatur pin relay sebagai output
pinMode(RELAYPIN, OUTPUT);
digitalWrite(RELAYPIN, HIGH); // Memastikan relay awalnya mati
// Menampilkan pesan awal di LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Kipas Otomatis");
lcd.setCursor(0, 1);
lcd.print("MENGUKUR SUHU...");
delay(2000);
}
void loop() {
// Membaca suhu dari sensor DHT22
float suhu = dht.readTemperature();
// Menampilkan suhu di serial monitor
Serial.print("Suhu: ");
Serial.print(suhu);
Serial.println(" *C");
// Menampilkan suhu di LCD
lcd.setCursor(0, 0);
lcd.print("Suhu: ");
lcd.print(suhu);
lcd.print(" *C ");
// Logika kontrol kipas
if (suhu >= 31.0) { // Suhu ambang batas
digitalWrite(RELAYPIN, LOW); // Menyalakan kipas
lcd.setCursor(0, 1);
lcd.print("Kipas ON ");
Serial.print("Kipas ON ");
} else {
digitalWrite(RELAYPIN, HIGH); // Mematikan kipas
lcd.setCursor(0, 1);
lcd.print("Kipas OFF");
Serial.print("Kipas OFF ");
}
// Jeda 2 detik sebelum pembacaan berikutnya
delay(2000);
}