#include <DHT.h>
#define gasPin A0 // MQ-2 analog output
#define led1 8 // LED indikator suhu/gas
#define relay 11 // relay indikator kipas
#define buzzPin 9 // Buzzer pin
#define DHTPIN A1 // DHT22 data pin
#define DHTTYPE DHT22 // Tipe sensor DHT
DHT dht(DHTPIN, DHTTYPE);
// Threshold MQ-2 (kalibrasi disesuaikan)
const int gasThreshold = 500;
// Batas suhu untuk menyalakan LED (°C)
const float tempThreshold = 33.0;
void setup() {
Serial.begin(9600);
dht.begin();
pinMode(led1, OUTPUT);
pinMode(relay, OUTPUT);
pinMode(buzzPin, OUTPUT);
Serial.println("=== Gas + Suhu + Cahaya Monitoring ===");
}
// Fungsi pembacaan gas
void gasSensor() {
int gasValue = analogRead(gasPin);
float gasVoltage = gasValue * (5.0 / 1023.0);
Serial.print("Gas ADC = ");
Serial.print(gasValue);
Serial.print(" (");
Serial.print(gasVoltage, 2);
Serial.println(" V)");
if (gasValue > gasThreshold) {
digitalWrite(led1, HIGH);
tone(buzzPin, 1000);
Serial.println("** GAS TERDETEKSI! **");
} else {
digitalWrite(led1, LOW);
noTone(buzzPin);
}
}
// Fungsi pembacaan DHT22
void dht22() {
float suhu = dht.readTemperature();
float kelembapan = dht.readHumidity();
if (isnan(suhu) || isnan(kelembapan)) {
Serial.println("Gagal membaca DHT!");
return;
}
Serial.println("-- Monitoring Suhu Ruang --");
Serial.print("Suhu = ");
Serial.print(suhu);
Serial.print(" °C, Kelembapan = ");
Serial.print(kelembapan);
Serial.println(" %");
if (suhu > tempThreshold) {
digitalWrite(relay, HIGH);
Serial.println("-- Suhu tinggi, RELAY ON --");
} else {
digitalWrite(relay, LOW);
}
}
// Loop utama
void loop() {
dht22();
gasSensor();
Serial.println("----------------------------\n");
delay(2000);
}