#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define SENSOR_GAS_PIN 34
#define DHT_PIN 15
#define DHT_TYPE DHT22
#define LED_HIJAU 18
#define LED_MERAH 19
#define BUZZER 23
LiquidCrystal_I2C lcd(0x27, 16, 2);
DHT dht(DHT_PIN, DHT_TYPE);
int ambangGas = 30; // Threshold gas 30%
float ambangSuhu = 50.0; // indikator kebakaran
void setup() {
Serial.begin(115200);
dht.begin();
pinMode(LED_HIJAU, OUTPUT);
pinMode(LED_MERAH, OUTPUT);
pinMode(BUZZER, OUTPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Sistem Keamanan");
lcd.setCursor(0, 1);
lcd.print("Gas & Kebakaran");
delay(2000);
lcd.clear();
}
void loop() {
// Potensiometer
int nilaiAnalog = analogRead(SENSOR_GAS_PIN);
int persentaseGas = map(nilaiAnalog, 0, 4095, 0, 100);
// DHT22
float suhu = dht.readTemperature();
lcd.setCursor(0, 0);
lcd.print("Gas:");
lcd.print(persentaseGas);
lcd.print("% T:");
lcd.print(suhu, 1);
lcd.print("C ");
lcd.setCursor(0, 1);
if (suhu >= ambangSuhu) {
lcd.print("AWAS KEBAKARAN! ");
digitalWrite(LED_HIJAU, LOW);
digitalWrite(LED_MERAH, HIGH);
tone(BUZZER, 1000);
}
else if (persentaseGas >= ambangGas) {
lcd.print("AWAS GAS BOCOR! ");
digitalWrite(LED_HIJAU, LOW);
digitalWrite(LED_MERAH, HIGH);
tone(BUZZER, 1000);
}
else {
lcd.print("Kondisi Aman ");
digitalWrite(LED_HIJAU, HIGH);
digitalWrite(LED_MERAH, LOW);
noTone(BUZZER);
}
delay(1000);
}