#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define MQ4_PIN 34 // Pin analog untuk sensor MQ-4
#define LED_RED 27 // Pin untuk LED Merah
#define LED_GREEN 26 // Pin untuk LED Hijau
#define BUZZER_PIN 25 // Pin untuk Buzzer
#define RELAY_PIN 33 // Pin untuk Relay Kipas
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C LCD
void setup() {
Serial.begin(115200);
lcd.init();
lcd.backlight();
pinMode(LED_RED, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(RELAY_PIN, OUTPUT); // Atur pin relay sebagai OUTPUT
digitalWrite(LED_RED, LOW);
digitalWrite(LED_GREEN, LOW);
digitalWrite(BUZZER_PIN, LOW);
digitalWrite(RELAY_PIN, LOW); // Pastikan relay mati pada awal
lcd.print("Gas Monitor");
delay(2000);
lcd.clear();
}
void loop() {
int gasLevel = analogRead(MQ4_PIN);
lcd.setCursor(0, 0);
lcd.print("Gas Level: ");
lcd.print(gasLevel);
if (gasLevel > 2000) { // Ambang batas untuk gas bocor
digitalWrite(LED_RED, HIGH);
digitalWrite(LED_GREEN, LOW);
digitalWrite(BUZZER_PIN, HIGH);
tone(BUZZER_PIN, 200);
digitalWrite(RELAY_PIN, HIGH); // Hidupkan kipas
lcd.setCursor(0, 1);
lcd.print("Gas Bocor!");
} else {
digitalWrite(LED_RED, LOW);
digitalWrite(LED_GREEN, HIGH);
digitalWrite(BUZZER_PIN, LOW);
noTone(BUZZER_PIN);
digitalWrite(RELAY_PIN, LOW); // Matikan kipas
lcd.setCursor(0, 1);
lcd.print("Gas Aman ");
}
delay(1000); // Pembacaan setiap 1 detik
}