#include "DHT.h"
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
#define DHTPIN 2
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
#define SPEAKER_PIN 10
const int LED_PIN1 = 13;
const int LED_PIN2 = 12;
const int LED_PIN3 = 11;
const int suhu1 = 40;
const int suhu2 = 35;
const int suhu3 = 29;
String status;
float humidity, temperature;
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
Serial.println(F("DHT22 example!"));
pinMode(SPEAKER_PIN, OUTPUT);
dht.begin();
lcd.init();
lcd.backlight();
}
void loop() {
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Check if any reads failed and exit early (to try again).
if (isnan(temperature) || isnan(humidity)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
if (temperature <= suhu3) {
digitalWrite(LED_PIN1, LOW);
digitalWrite(LED_PIN2, LOW);
digitalWrite(LED_PIN3, HIGH);
status = "Suhu Rendah";
}
else if (temperature <= 35) {
digitalWrite(LED_PIN1, LOW);
digitalWrite(LED_PIN2, HIGH);
digitalWrite(LED_PIN3, LOW);
status = "Suhu Cukup";
}
else {
digitalWrite(LED_PIN1, HIGH);
digitalWrite(LED_PIN2, LOW);
digitalWrite(LED_PIN3, LOW);
status = "Suhu Tinggi";
}
Serial.print(F("Humidity: "));
Serial.print(humidity);
Serial.print(F("% Temperature: "));
Serial.print(temperature);
Serial.println(F("°C "));
// Wait a few seconds between measurements.
delay(2000);
lcd.setCursor(2,1);
lcd.print(status);
lcd.setCursor(5,0);
lcd.print(temperature);
}