#include "DHT.h"
// Konfigurasi DHT22
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht (DHTPIN, DHTTYPE);
// Konfigurasi Potensiomter sebagai Simulator MQ-2
#define MQ2_PIN A0 // Pin analog untuk potensiometer
// Pin Output
#define led 12
#define buzzer 11
#define relay 4
// Threshold
const float SUHU_BAHAYA = 60.0; // ℃
const float KELEMBABAN_BAHAYA = 30.0; // %
const int GAS_BAHAYA = 200; // ppm (asap)
void setup () {
Serial.begin (115200);
dht.begin();
pinMode(led, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(relay, OUTPUT);
Serial.println(F("Sistem Deteksi Kebakaran (Wokwi)"));
}
void loop() {
// Baca sensor
float suhu = dht.readTemperature();
float kelembaban = dht.readHumidity();
// Baca nilai potensiometer (0-1023)
int gasValue = analogRead(MQ2_PIN);
// Validasi data
if (isnan(suhu) || isnan (kelembaban)) {
Serial.println(F("Error membaca DHT22!"));
return;
}
// Deteksi bahaya
bool bahaya = (suhu >= SUHU_BAHAYA) ||
(kelembaban <= KELEMBABAN_BAHAYA) ||
(gasValue >= GAS_BAHAYA);
// Kontrol output
digitalWrite (led, bahaya ? HIGH : LOW);
digitalWrite (relay, bahaya ? HIGH : LOW);
if (bahaya) {
// Frekuensi 1kHz, durasi 500ms
tone(buzzer, 500, 1000);
} else {
noTone (buzzer) ;
}
// Tampilkan data
Serial.print(F("Suhu: "));
Serial.print(suhu);
Serial.print(F("℃ | "));
Serial.print(F("kelembaban: "));
Serial.print(kelembaban);
Serial.print(F("% | "));
Serial.print(F("Gas: "));
Serial.print(gasValue);
Serial.print(F("/1023"));
delay(2000);
}