#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
// Inisialisasi LCD I2C dengan alamat 0x27 dan ukuran 16x2
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Definisi pin
#define DHTPIN 2 // Pin yang terhubung ke DHT11
#define DHTTYPE DHT22 // Tipe DHT
#define LED_PUTIH 4 // Pin untuk LED putih
#define LED_MERAH 5 // Pin untuk LED merah
#define LED_BIRU 3 // Pin untuk LED biru
#define RELAY_PIN 8 // Pin untuk relay
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
// Inisialisasi LCD
lcd.begin(16,2);
lcd.backlight();
// Inisialisasi pin sebagai output
pinMode(LED_PUTIH, OUTPUT);
pinMode(LED_MERAH, OUTPUT);
pinMode(LED_BIRU, OUTPUT);
pinMode(RELAY_PIN, OUTPUT);
// Nyalakan LED biru saat power on
digitalWrite(LED_BIRU, HIGH);
// Inisialisasi DHT sensor
dht.begin();
}
void loop() {
// Baca data suhu dari DHT11
float suhu = dht.readTemperature();
float kelembaban = dht.readHumidity();
// Periksa apakah pembacaan suhu berhasil
if (isnan(suhu)) {
lcd.setCursor(0, 0);
lcd.print("Error reading");
lcd.setCursor(0, 1);
lcd.print("temperature");
return;
}
// Tampilkan suhu di LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Suhu: ");
lcd.print(suhu);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Lembab: ");
lcd.print(kelembaban);
lcd.print(" %");
// Tampilan Layar
Serial.println(0, 0);
Serial.print("Suhu: ");
Serial.print(suhu);
Serial.print(" C ");
Serial.print("dan ");
Serial.print("Lembab: ");
Serial.print(kelembaban);
Serial.print(" %");
// Logika kontrol LED dan relay
if (suhu < 35) {
digitalWrite(LED_PUTIH, HIGH); // Nyalakan LED putih
digitalWrite(LED_MERAH, LOW); // Matikan LED merah
digitalWrite(RELAY_PIN, LOW); // Matikan relay
} else {
digitalWrite(LED_PUTIH, LOW); // Matikan LED putih
digitalWrite(LED_MERAH, HIGH); // Nyalakan LED merah
digitalWrite(RELAY_PIN, HIGH); // Nyalakan relay
}
// Tunggu selama 1 detik sebelum pembacaan berikutnya
delay(900);
}