// Konfigurasi pin
#include <LiquidCrystal_I2C.h>
#include <DHT.h> // konfigurasi DHT
#define MQ2_PIN 4 // Pin analog untuk sensor MQ-2
#define BUZZER_PIN 25 // Pin untuk buzzer
//#define LED_PIN 26 // Pin untuk LED (opsional)
#define GAS_THRESHOLD 40 // Ambang batas gas (ubah sesuai kebutuhan)
#define DHT_PIN 27 // Pin untuk sensor DHT11
#define DHT_TYPE DHT22 // Tipe sensor DHT
// #define LCD_ADDRESS 0x27 // Alamat I2C LCD (cek dengan I2C scanner jika tidak yakin)
// #define LCD_COLUMNS 16 // Jumlah kolom LCD
// #define LCD_ROWS 2 // Jumlah baris LCD
DHT dht(DHT_PIN, DHT_TYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
// Inisialisasi serial monitor
Serial.begin(115200);
dht.begin();
// Konfigurasi pin
pinMode(MQ2_PIN, INPUT);
pinMode(BUZZER_PIN, OUTPUT);
//pinMode(LED_PIN, OUTPUT);
lcd.init();
lcd.backlight(); // Aktifkan backlight LCD
lcd.clear();
lcd.print("Sistem Mulai...");
delay(2000);
lcd.clear();
// Pesan siap
Serial.println("Sistem Deteksi Kebocoran Gas Siap");
}
void clearLine(int line) {
lcd.setCursor(0, line);
lcd.print(" "); // Cetak 16 spasi untuk mengosongkan satu baris
}
void loop() {
// Membaca nilai analog dari sensor
int gasValue = analogRead(MQ2_PIN);
//membaca DHT
float temperature = dht.readTemperature();
float kelembapan = dht.readHumidity();
// Tampilkan nilai sensor di Serial Monitor
Serial.print("Nilai Gas: ");
Serial.println(gasValue);
Serial.print(" Suhu: ");
Serial.print(temperature);
Serial.print("Kelembapan: ");
Serial.print(kelembapan);
Serial.println("%");
// Jika nilai gas melebihi ambang batas
if (gasValue > GAS_THRESHOLD) {
// Serial.println("Gas Terdeteksi! Aktifkan Alarm!");
lcd.setCursor(0,0);
lcd.print("GAS BOCOR woyyy");
lcd.setCursor(0,1);
lcd.print("DARURAT NARKOBAA");
digitalWrite(BUZZER_PIN, HIGH); // Aktifkan buzzer
} else {
clearLine(0); // Hapus baris pertama
clearLine(1);
lcd.setCursor(0,0);
lcd.print("temp:");
lcd.setCursor(7,0);
lcd.print(temperature);
lcd.setCursor(13,0);
lcd.print((char)223);
lcd.setCursor(14,0);
lcd.print("C");
// 222
lcd.setCursor(0,1);
lcd.print("Suhu:");
lcd.setCursor(7,1);
lcd.print(kelembapan);
lcd.setCursor(12,1);
lcd.print("%");
digitalWrite(BUZZER_PIN, LOW); // Matikan buzzer
}
// Delay untuk stabilisasi
delay(500);
}