0% ont trouvé ce document utile (0 vote)
0 vues6 pages

CODE RAPHAËL

Ce code Arduino intègre un système de détection de gaz et de flamme utilisant divers capteurs et un écran LCD pour afficher les informations. En cas de détection de flamme ou de gaz au-dessus d'un seuil, des alertes visuelles et sonores sont activées, et un servo-moteur effectue un mouvement. Le programme assure également une mise à jour régulière de l'affichage sans bloquer l'exécution des autres tâches.

Transféré par

Junior Muteba
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
0 vues6 pages

CODE RAPHAËL

Ce code Arduino intègre un système de détection de gaz et de flamme utilisant divers capteurs et un écran LCD pour afficher les informations. En cas de détection de flamme ou de gaz au-dessus d'un seuil, des alertes visuelles et sonores sont activées, et un servo-moteur effectue un mouvement. Le programme assure également une mise à jour régulière de l'affichage sans bloquer l'exécution des autres tâches.

Transféré par

Junior Muteba
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

#include <Wire.

h>

#include <LiquidCrystal_I2C.h>

#include <DHT.h>

#include <Servo.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

#define DHTPIN 2

#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

Servo monServo;

// Définition des broches

const int pinMQ2 = A0;

const int pinFlamme = 3;

const int pinRelais = 4;

const int pinBuzzer = 5;

const int ledVerte = 6;

const int ledJaune = 7;

const int ledRouge = 8;

const int pinServo = 9;

// Configuration des variables de contrôle

const int seuilGaz = 400;

// Variables pour le mouvement du servo (Centre à 90°)

int angle = 90;

int phase = 1;
// Variables pour la stabilisation de l'affichage

unsigned long tempsPrecedentLCD = 0;

const long intervalleLCD = 400; // L'écran se mettra à jour toutes les


400ms (stable pour l'œil)

void setup() {

[Link](9600);

[Link]();

[Link](pinServo);

[Link](90);

delay(500);

pinMode(pinFlamme, INPUT);

pinMode(pinRelais, OUTPUT);

pinMode(pinBuzzer, OUTPUT);

pinMode(ledVerte, OUTPUT);

pinMode(ledJaune, OUTPUT);

pinMode(ledRouge, OUTPUT);

digitalWrite(pinRelais, LOW);

digitalWrite(pinBuzzer, LOW);

[Link]();

[Link]();

[Link]();

void loop() {
// 1. Lecture stabilisée du capteur de gaz (Moyenne sur 10 lectures)

long sommeGaz = 0;

for(int i = 0; i < 10; i++) {

sommeGaz += analogRead(pinMQ2);

delay(2); // Très court délai entre les lectures pour la stabilité

int niveauGaz = sommeGaz / 10; // C'est cette valeur lissée qu'on utilise

// 2. Lecture des autres capteurs

float temperature = [Link]();

int etatFlamme = digitalRead(pinFlamme);

if (isnan(temperature)) { temperature = 0; }

// 3. Affichage sur le LCD cadencé (SANS bloquer le reste du code)

unsigned long tempsActuel = millis();

if (tempsActuel - tempsPrecedentLCD >= intervalleLCD) {

tempsPrecedentLCD = tempsActuel; // Sauvegarde du temps

// Ligne 1 : Température et Gaz

[Link](0, 0);

[Link]("T:"); [Link]((int)temperature); [Link]("C ");

[Link]("Gaz:");

[Link](niveauGaz);

[Link](" "); // Espaces vides pour effacer proprement les anciens


chiffres (ex: passer de 1000 à 99)

}
// 4. Logique de sécurité (S'exécute TOUJOURS en temps réel à chaque
cycle)

if (etatFlamme == HIGH) {

// FEU DETECTE

[Link](0, 1);

[Link]("!! FEU DETECTE !!");

digitalWrite(pinRelais, HIGH);

digitalWrite(pinBuzzer, HIGH);

digitalWrite(ledRouge, HIGH);

digitalWrite(ledJaune, LOW);

digitalWrite(ledVerte, LOW);

else if (niveauGaz > seuilGaz) {

// ALERTE GAZ

[Link](0, 1);

[Link]("Alerte: Fume/Gaz");

digitalWrite(pinRelais, LOW);

digitalWrite(pinBuzzer, HIGH);

digitalWrite(ledRouge, LOW);

digitalWrite(ledJaune, HIGH);

digitalWrite(ledVerte, LOW);

deplacerServo90Degres();

else {

// SURVEILLANCE NORMALE

[Link](0, 1);
[Link]("Scan en cours... ");

digitalWrite(pinRelais, LOW);

digitalWrite(pinBuzzer, LOW);

digitalWrite(ledRouge, LOW);

digitalWrite(ledJaune, LOW);

digitalWrite(ledVerte, HIGH);

deplacerServo90Degres();

delay(40); // Contrôle la vitesse globale et du servomoteur

void deplacerServo90Degres() {

if (phase == 1) {

angle++;

if (angle >= 135) { phase = 2; }

else if (phase == 2) {

angle--;

if (angle <= 90) { phase = 3; }

else if (phase == 3) {

angle--;

if (angle <= 45) { phase = 4; }

else if (phase == 4) {

angle++;
if (angle >= 90) { phase = 1; }

[Link](angle);

Vous aimerez peut-être aussi