#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
int sensorPin = A0; // Simuler le capteur de gaz avec un potentiomètre
int sensorValue = 0;
int seuil = 300; // Définir le seuil de détection du gaz
int buzzerPin = 2; // Pin où le buzzer est connecté (D2)
int ledRougePin = 3; // Pin où la LED rouge est connectée (D3)
int ledVertePin = 4; // Pin où la LED verte est connectée (D4)
int alertDuration = 500; // Durée de l'alerte en millisecondes
void setup() {
Serial.begin(9600);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("Échec de l'initialisation de l'écran OLED"));
for (;;);
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
pinMode(buzzerPin, OUTPUT);
pinMode(ledRougePin, OUTPUT); // Initialiser la LED rouge
pinMode(ledVertePin, OUTPUT); // Initialiser la LED verte
display.setCursor(0, 0);
display.println(F("Systeme de detection"));
display.println(F("de gaz"));
display.display();
delay(2000); // Pause de 2 secondes
}
void loop() {
sensorValue = analogRead(sensorPin); // Lire la valeur du capteur
Serial.print("Lecture du capteur : ");
Serial.println(sensorValue);
display.clearDisplay();
display.setCursor(0, 0);
display.println(F("Lecture du capteur :"));
display.setCursor(0, 16);
display.print(sensorValue);
if (sensorValue > seuil) {
// Activer le buzzer et la LED rouge si le seuil est dépassé
digitalWrite(buzzerPin, HIGH); // Activer le buzzer
display.setCursor(0, 32);
display.println(F("Alerte !"));
display.println(F("Gaz detecte!"));
// Alerte sonore
tone(buzzerPin, 262); // Émettre un son à 262 Hz
delay(alertDuration); // Maintenir le son pendant alertDuration
noTone(buzzerPin); // Arrêter le son
// Clignoter la LED rouge
for (int i = 0; i < 5; i++) {
digitalWrite(ledRougePin, HIGH); // Allumer la LED rouge
delay(250);
digitalWrite(ledRougePin, LOW); // Éteindre la LED rouge
delay(250);
}
// Éteindre la LED verte si une alerte est active
digitalWrite(ledVertePin, LOW);
} else {
digitalWrite(buzzerPin, LOW); // Désactiver le buzzer
digitalWrite(ledRougePin, LOW); // Éteindre la LED rouge
digitalWrite(ledVertePin, HIGH); // Allumer la LED verte
display.setCursor(0, 32);
display.println(F("Aucun gaz detecte"));
}
display.display(); // Mettre à jour l'affichage
delay(1000); // Pause de 1 seconde
}