Utiliser un capteur de GAZ Analogique comme un Capteur Numérique ‼

Bonjour a Tous…

Je veux faire une montage de détection de gaz a l’aide d’un capteur MQ2 a sortie analogique et de détection de flamme.
ma question est comme suivant: est-que je peut câblé les deux capteurs a une entré numérique ??.

car le procédés agit selon les deux information <<existance de gaz/feu ou pas>> . et quand l’un des capteurs émet un signal HIGH, la vanne de source GPL vas se fermée et les 2 pompes a eau démarre avec une alarme sonore. comme illustré dans les photos suivante

Appui sur le bouton ALARM

-les BP représente les deux capteurs + un bouton d’urgence et un bouton RESET
-les LED représente des vanne de contrôle automatique + un Buzzer/Alarme.

voici le code :

int i=0,g=0,f=0,a=0,r=0;
int xv1=9,xv2=10,sir=11,gpl=12;
int br=0,ba=1,gs=2,fs=3;

void setup()
{
    pinMode(xv1, OUTPUT);
    pinMode(xv2, OUTPUT);
    pinMode(sir, OUTPUT);
 pinMode(gpl, OUTPUT);
 pinMode(br, INPUT);
 pinMode(ba, INPUT);
 pinMode(gs, INPUT);
 pinMode(fs, INPUT);
 digitalWrite(xv1, HIGH);
 digitalWrite(xv2, HIGH);
 digitalWrite(sir, HIGH);
 digitalWrite(gpl, LOW);
}
void loop()
{
 a=digitalRead(ba);
 r=digitalRead(br);
 g=digitalRead(gs);
 f=digitalRead(fs);

    if(g==HIGH)
    {
        digitalWrite(xv1, LOW);
        digitalWrite(sir, LOW);
        digitalWrite(gpl, HIGH);
    }
    else if(f==HIGH)
    {
        digitalWrite(xv1, HIGH);
        digitalWrite(xv2, LOW);
        digitalWrite(sir, LOW);
        digitalWrite(gpl, HIGH);
    }
    else if(a==HIGH||i==1)
    {
        digitalWrite(xv1, LOW);
        digitalWrite(xv2, LOW);
        digitalWrite(sir, LOW);
        digitalWrite(gpl, HIGH);
        i=1;
    }
    else
    {
        delay(1500);
        digitalWrite(xv1, HIGH);
        digitalWrite(xv2, HIGH);
        digitalWrite(sir, HIGH);
    }
    if(r==HIGH)
    {
        i=0;
        digitalWrite(xv1, HIGH);
        digitalWrite(xv2, HIGH);
        digitalWrite(sir, HIGH);
        digitalWrite(gpl, LOW);
    }
}

si c’est pas possible merci de me le dire pour que j’écrit un nouveau code traitant des signales Analogique avant que je reçoit les capteur que j’ai acheter du net.
Merci pour la réponse et bon courage a tous :wink:

ma question est comme suivant: est-que je peut câblé les deux capteurs a une entré numérique ?

Un signal numérique n'est qu'un signal analogique particulier. :grin: Ce qui compte c'est le traitement du signal dans le micro. En tout premier on n'a pas le droit d'appliquer sur une entrée quelquonque du micro une tension négative ou supérieure à la tension d'alimentation Vcc.

Entrée analogique : Elle fonctionne comme un voltmètre et renvoie un nombre proportionnel à la valeur de l'amplitude du signal. Elle ne fait aucune décision S'il doit y avoir une décision elle doit être faite dans le programme.

Entrée numérique : Elle fonctionne en tout ou rien. Dans ses circuits d'entrée Il existe un seuil autour de Vcc/2. Si le signal appliqué à une amplitude inférieure à ce seuil l'entrée numérique décidera que c'est un "0". Si l'amplitude est supérieure à ce seuil l'entrée numérique décidera que c'est un "1".

Donc tout va dépendre du niveau de tension délivré par le capteur. Le seuil (environ 2.4V pour un Vcc= 5V) étant fixe l'utilisation d'une entrée analogique avec quelques lignes de programme sera plus souple.

Merci pour votre réponse.. Alors si je veux tester les capteurs avec des états logique je doit écrire if (digitalRead(2)>492)  ; /*pour un min de 2.4V*/ ou bien je vais tenté de changer le câblage selon votre conseille, afin de traitai des signaux analogique. comme-ça je vais profité des entrée A0,A1 du UNO n'est-pas ‼. et pour le faire je vais tester ::) if (analogRead(A0)>0)  ; Désolé pour le dérangement et bon courage a tous ;)

if (digitalRead(2>492)

Tu ferais bien de tenter une compilation de ton code, tu aura une bordée d'erreurs de la part du compilateur. 1) il n'y a pas le même nombre de parenthèses ouvrantes que fermantes --> le compilateur ne comprendra rien et il sortira une erreur. 2) digitalRead (numéro_de_pin) est une fonction qui lit l'état logique d'une pin numérique. Il ne peut pas y avoir de condition dans les parenthèses. Dans les parenthèses il n'y a que le numéro de la pin à lire. Idem pour analogRead(numéro_de_pin)

Une lecture du site arduino : Learning--> Reference ou du tuto d'Eskimon en français s'impose avant d'aller plus en avant. S'entrainer avec les exemples simples fournis avec l'IDE est un pré-requis. Sinon tu vas accumuler erreur sur erreur et se sera indéboguable.

if (digitalRead(2)>492)  ; /*pour un min de 2.4V*/
if (analogRead(A0)>0)  ;

Merci pour les remarques :blush: , c’était juste un -Quick-Copy-Past- si non, le code devrais marcher le plus normalement de monde, non :confused:

Non.

digitalRead(2) renvoie un entier qui vaut soit 0 si l’entrée est détectée à l’état bas, soit 1 si l’entrée est détectée à l’état haut.
Donc digital(2) ne peut jamais être supérieur à 492. D’ailleur d’où sort ce nombre ?

analogRead(A0) renvoie un entier compris entre 0 et 1023. Pour calculer la tension à partir de ce nombre il faut lire la documentation et en particulier le tuto d’Eskimon.

Tu ne maîtrises pas les bases, il faut absolument que tu télecharge le tuto d’Eskimon (gogole sera ton copain).
C’est la meilleure façon d’apprendre le minimum vital.