#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
// Chân kết nối LED
#define LED_STATUS 18 // LED xanh báo hệ thống hoạt động
#define LED_ALERT 19 // LED đỏ cảnh báo khí H2S cao
// Ngưỡng cảnh báo H2S (ppm)
#define H2S_THRESHOLD 5.0
void setup() {
Serial.begin(115200);
// Khởi động OLED
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println("OLED không khởi động được!");
while (1);
}
// Cấu hình LED
pinMode(LED_STATUS, OUTPUT);
pinMode(LED_ALERT, OUTPUT);
display.clearDisplay();
Serial.println("Hệ thống giám sát H2S đã khởi động!");
}
void loop() {
// Giả lập đọc dữ liệu từ ADS1115 (tín hiệu cảm biến H2S)
float h2s_concentration = random(0, 100) / 10.0; // Giả lập từ 0.0 đến 10.0 ppm
// Hiển thị lên Serial
Serial.print("Nồng độ H2S: ");
Serial.print(h2s_concentration);
Serial.println(" ppm");
// Hiển thị lên OLED
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(10, 20);
display.print("H2S: ");
display.print(h2s_concentration);
display.print("ppm");
display.display();
// Điều khiển LED dựa vào giá trị H2S
digitalWrite(LED_STATUS, HIGH); // Luôn bật LED xanh báo hệ thống hoạt động
if (h2s_concentration >= H2S_THRESHOLD) {
digitalWrite(LED_ALERT, HIGH); // Bật LED đỏ cảnh báo
} else {
digitalWrite(LED_ALERT, LOW); // Tắt LED đỏ
}
delay(1000);
}