#include <DHT.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
// Pin DHT22 dan LCD.
#define DHTPIN 2
#define DHTTYPE DHT22
#define LEDPIN 4 // LED di pin 4.
DHT dht(DHTPIN, DHTTYPE);
// Inialisasi LCD (alamat I2C 0x27).
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Inialisasi Servo.
// Di sini, Servo digunakan sebagai kontrol ventilasi, di mana jika temperatur
// Sudah terlalu tinggi, maka Servo akan berotasi untuk membuka ventilasi.
// Ventilasi di sini adalah LED yang akan menyala jika "dibuka".
Servo myServo;
void setup() {
lcd.init();
lcd.backlight();
dht.begin();
myServo.attach(3); // Men-set Servo ke pin 3.
pinMode(LEDPIN, OUTPUT); // Men-set LED pin sebagai output.
myServo.write(0); // Dimulai di 0 derajat.
digitalWrite(LEDPIN, LOW); // LED off sebagai default.
}
void loop() {
float temp = dht.readTemperature();
float hum = dht.readHumidity();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temp);
lcd.setCursor(0, 1);
lcd.print("Hum: ");
lcd.print(hum);
// Kontrol Servo berdasarkan temperatur.
if (temp > 30) {
myServo.write(90); // Putar Servo ke arah 90 derajat (membuka ventilasi).
digitalWrite(LEDPIN, HIGH); // LED menyala
} else {
myServo.write(0); // Putar Servo kembali ke 0 derajat (menutup ventilasi).
digitalWrite(LEDPIN, LOW); // LED mati.
}
delay(2000);
}