#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHT_PIN 2 // Pin data DHT22 (atau DHT11) terhubung ke pin 2
#define DHT_TYPE 22 // Ganti dengan DHT11 jika menggunakan sensor DHT11
#define RED_LED_PIN 8 // Pin LED merah
#define YELLOW_LED_PIN 9 // Pin LED kuning
#define GREEN_LED_PIN 10 // Pin LED hijau
DHT dht(2, 22);
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
dht.begin();
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Hidupkan backlight LCD
pinMode(RED_LED_PIN, OUTPUT);
pinMode(YELLOW_LED_PIN, OUTPUT);
pinMode(GREEN_LED_PIN, OUTPUT);
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(YELLOW_LED_PIN, LOW);
digitalWrite(GREEN_LED_PIN, LOW);
}
void loop() {
delay(2000);
float temperature = dht.readTemperature(); // Membaca suhu dari sensor DHT22
float lembab = dht.readHumidity();
lcd.clear(); // Membersihkan tampilan LCD
lcd.setCursor(0, 0); // Mengatur posisi kursor ke baris pertama
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print(" C");
lcd.setCursor(0, 1); // Mengatur posisi kursor ke baris kedua
lcd.print("Lembab: ");
lcd.print(lembab);
lcd.print(" %");
if (isnan(temperature) && (lembab)) {
Serial.println("Gagal membaca suhu dari sensor DHT22!");
return;
}
Serial.print("Suhu: ");
Serial.println(temperature);
Serial.print("Lembab: ");
Serial.println(lembab);
if (temperature > 35) {
digitalWrite(RED_LED_PIN, HIGH);
digitalWrite(YELLOW_LED_PIN, LOW);
digitalWrite(GREEN_LED_PIN, LOW);
} else if (temperature >= 30 && temperature <= 35) {
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(YELLOW_LED_PIN, HIGH);
digitalWrite(GREEN_LED_PIN, LOW);
} else {
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(YELLOW_LED_PIN, LOW);
digitalWrite(GREEN_LED_PIN, HIGH);
}
delay(2000); // Mengukur suhu setiap 2 detik
}