// Kendali 3 Led dengan Sensor Suhu
#include <LiquidCrystal_I2C.h>//Menambahkan Library LCD
LiquidCrystal_I2C lcd(0x27,16,2);// Mengatur Alamat LCD
#include <DHT.h>
#define DHTPIN 15 // Pin koneksi sensor DHT11
#define DHTTYPE DHT22 // Tipe sensor DHT
#define GREEN_LED 13 // Pin koneksi lampu hijau
#define YELLOW_LED 12 // Pin koneksi lampu kuning
#define RED_LED 14 // Pin koneksi lampu merah
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
delay(10);
lcd.init();// Inisialisasi LCD
lcd.backlight();// Mengaktifkan Cahaya Latar LCD
lcd.setCursor(1,0);// Mengatur Posisi Teks pada LCD
lcd.print("KIPAS OTOMATIS"); // Menuliskan Teks Pada LCD
lcd.setCursor(2,1);// Mengatur Posisi Teks pada LCD
lcd.print("SENSOR SUHU"); // Menuliskan Teks Pada LCD
delay(5000); // Waktu Tunda
dht.begin();
pinMode(GREEN_LED, OUTPUT);
pinMode(YELLOW_LED, OUTPUT);
pinMode(RED_LED, OUTPUT);
}
void loop() {
float temperature = dht.readTemperature();
int Kelembaban = dht.readHumidity();
lcd.setCursor(0,0);
lcd.print("T=");
lcd.print(temperature,1);lcd.write(0xdf);lcd.print("C ");
lcd.print("H=");
lcd.print(Kelembaban);lcd.print("% ");
if (!isnan(temperature)) {
if (temperature <= 20) {
controlLEDs(true, false, false); // Lampu hijau ON, lampu kuning dan merah OFF
} else if (temperature > 20 && temperature <= 25) {
controlLEDs(false, true, false); // Lampu kuning ON, lampu hijau dan merah OFF
} else if (temperature > 25 && temperature <= 30) {
controlLEDs(false, false, true); // Lampu merah ON, lampu hijau dan kuning OFF
} else {
controlLEDs(false, false, false); // Semua lampu OFF
}
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
} else {
Serial.println("Failed to read from DHT sensor");
}
delay(2000); // Delay 2 detik
}
void controlLEDs(bool green, bool yellow, bool red) {
digitalWrite(GREEN_LED, green ? HIGH : LOW);
digitalWrite(YELLOW_LED, yellow ? HIGH : LOW);
digitalWrite(RED_LED, red ? HIGH : LOW);
}