#include "DHTesp.h"
#include <LiquidCrystal_I2C.h>
const int DHT_PIN = 15;
const int BUZZER = 18;
const int LED = 5;
const int MQ2_PIN = 34; // Pin analog sensor asap
const int FLAME_PIN = 35; // Pin digital sensor api
DHTesp dhtSensor;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(115200);
pinMode(BUZZER, OUTPUT);
pinMode(LED, OUTPUT);
pinMode(FLAME_PIN, INPUT);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
lcd.init();
lcd.backlight();
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
int mq2Value = analogRead(MQ2_PIN); // Baca nilai asap
int flameValue = digitalRead(FLAME_PIN); // LOW = api terdeteksi
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
Serial.println("Smoke Value: " + String(mq2Value));
Serial.println("Flame Detected: " + String(flameValue == LOW ? "YES" : "NO"));
Serial.println("---");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: " + String(data.temperature, 1) + " C");
delay(1000);
lcd.setCursor(0, 1);
if (data.temperature > 32 && flameValue == LOW) {
// 🔥 SYARAT KEBARAKARAN: suhu tinggi + api terdeteksi
lcd.print("KEBAKARAN!!!");
digitalWrite(LED, HIGH);
tone(BUZZER, 1500);
}
else if (data.temperature > 32 && flameValue != LOW) {
lcd.print("SUHU TINGGI");
digitalWrite(LED, LOW);
noTone(BUZZER);
}
else if (flameValue == LOW && data.temperature <= 32) {
lcd.print("API TERDETEKSI / SUHU WAJAR");
digitalWrite(LED, LOW);
noTone(BUZZER);
}
else if (mq2Value > 3000) {
lcd.print("ASAP TERDETEKSI");
digitalWrite(LED, LOW);
noTone(BUZZER);
}
else if (data.temperature < 20) {
lcd.print("SUHU AMAN");
digitalWrite(LED, LOW);
noTone(BUZZER);
}
else {
lcd.print("NORMAL");
digitalWrite(LED, LOW);
noTone(BUZZER);
}
delay(2000);
}