#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 12 // pin dht
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define LED_HIJAU 27
#define LED_KUNING 18
#define LED_MERAH 14
#define BUZZER 26
void setup() {
Serial.begin(115200);
dht.begin(); // membaca dht
Wire.begin(22, 21);
lcd.init();
lcd.backlight();
pinMode(LED_MERAH, OUTPUT);
pinMode(LED_KUNING, OUTPUT);
pinMode(LED_HIJAU, OUTPUT);
pinMode(BUZZER, OUTPUT);
}
void loop() {
float suhu = dht.readTemperature(); // rumus suhu
float kelembaban = dht.readHumidity(); // rumus kelembaban
Serial.print("Suhu: ");
Serial.print(suhu);
Serial.print((char)176); // kode menampilkan simbol derajat di monitor
Serial.print("C | Kelembaban: ");
Serial.print(kelembaban);
Serial.println("%");
lcd.setCursor(0, 0);
lcd.print("T:");
lcd.print(suhu);
lcd.print(" H:");
lcd.print(kelembaban);
digitalWrite(LED_HIJAU, LOW);
digitalWrite(LED_KUNING, LOW);
digitalWrite(LED_MERAH, LOW);
noTone(BUZZER);
if (suhu < 30) {
lcd.setCursor(0, 1);
lcd.print("Status: Aman ");
digitalWrite(LED_HIJAU, HIGH);
delay(1000);
digitalWrite(LED_HIJAU, LOW);
delay(1000);
}
// Suhu > 30 (OKE)
else if (suhu >= 30 && suhu < 40) {
lcd.setCursor(0, 1);
lcd.print("Status: Oke ");
digitalWrite(LED_HIJAU, HIGH);
noTone(BUZZER);
delay(500);
}
// Suhu > 40 (WASPADA)
else if (suhu >= 40 && suhu < 50) {
lcd.setCursor(0, 1);
lcd.print("Status: Waspada!");
tone(BUZZER, 262); // nada DO
digitalWrite(LED_KUNING, HIGH);
delay(200);
digitalWrite(LED_KUNING, LOW);
delay(200);
}
// Suhu > 50 (STOP)
else if (suhu >= 50) {
lcd.setCursor(0, 1);
lcd.print("Status: STOP!!!");
tone(BUZZER, 392); // nada SOL
digitalWrite(LED_MERAH, HIGH);
delay(100);
digitalWrite(LED_MERAH, LOW);
delay(100);
}
}
Loading
esp32-devkit-c-v4
esp32-devkit-c-v4