#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTPIN 11
#define DHTTYPE DHT22
#define BUZZERPIN 10
#define LEDPIN 9
#define ledpin 8
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
Serial.println("Sistem Monitoring Suhu");
lcd.begin(16, 2);
dht.begin();
pinMode(BUZZERPIN, OUTPUT);
pinMode(LEDPIN, OUTPUT);
pinMode(ledpin, OUTPUT);
//Animasi startup sederhana
lcd.setCursor(0, 0);
lcd.print("Loading...");
delay(2000);
lcd.clear();
}
void loop() {
//Membaca data dari sensor
float t = dht.readTemperature();
float h = dht.readHumidity();
delay(1000);
//Menampilkan Suhu dan Kelembaban di LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Suhu: ");
lcd.print(t);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Lembab: ");
lcd.print(h);
lcd.print("%");
//Menampilkan di serial monitor
Serial.println("Sistem Monitoring Suhu");
Serial.print("Suhu = ");
Serial.print(t);
Serial.print(" C");
Serial.print("Kelembaban = ");
Serial.print(h);
Serial.print("%");
//Pemberitahuan batas suhu
if (t > 36) {
lcd.setCursor(0, 1);
lcd.print("Terlalu Panas!");
tone(BUZZERPIN, 1000);
digitalWrite(LEDPIN, HIGH);
delay(800);
digitalWrite(LEDPIN, LOW);
noTone(BUZZERPIN);
} else if (t < 16) {
lcd.setCursor(0, 1);
lcd.print("Terlalu Dingin!");
tone(BUZZERPIN, 500);
digitalWrite(ledpin, HIGH);
delay(800);
digitalWrite(ledpin, LOW);
noTone(BUZZERPIN);
}
delay(1000);
}