#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define MQ2_PIN 34 // Chân analog đọc cảm biến MQ-2
#define LED_STATUS 2 // LED báo trạng thái (xanh)
#define LED_WARNING 4 // LED cảnh báo (đỏ)
#define BUTTON_PIN 5 // Nút nhấn bật/tắt cảnh báo
Adafruit_SSD1306 display(128, 64, &Wire, -1);
bool alarmEnabled = true;
void setup() {
pinMode(MQ2_PIN, INPUT);
pinMode(LED_STATUS, OUTPUT);
pinMode(LED_WARNING, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
digitalWrite(LED_STATUS, HIGH); // Bật LED xanh báo thiết bị hoạt động
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
while (true);
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println("Gas Leak Monitor");
display.display();
}
void loop() {
int gasValue = analogRead(MQ2_PIN);
bool buttonState = digitalRead(BUTTON_PIN) == LOW;
if (buttonState) {
alarmEnabled = !alarmEnabled;
delay(300);
}
display.clearDisplay();
display.setCursor(0, 10);
display.println("Gas Level: " + String(gasValue));
if (gasValue > 600 && alarmEnabled) {
digitalWrite(LED_WARNING, HIGH);
display.setCursor(0, 30);
display.println("WARNING: Gas Leak!");
} else {
digitalWrite(LED_WARNING, LOW);
}
display.display();
delay(500);
}