Besoin d'un petit coup de main pour plusieur delay arduino:-D

Fermé
toflfou Messages postés 1320 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 6 septembre 2023 - 5 avril 2016 à 13:29
toflfou Messages postés 1320 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 6 septembre 2023 - 4 juil. 2016 à 15:37
Bonjour a vous ,alors je m'explique.Je viens de me "fabriquer" un petit extracteur détecteur fumer cigarette/c02 avec :
-1 arduino UNO
-1relay
-12volt externe
-2ventilo de Pc
-1 capteur de C02
-1 capteur de mouvement
-1 led
Donc dans mon code après quelque seconde il relève le taux de C02 pendant son taux de vérification de C02 il vérifie mon capteur de mouvement..et en loop..normal
Mais ma question est comment faire pour que le temps de rafraichissement du capteur C02 reste le Même , mais par contre comment faire pour que le capteur de mouvement soit constamment vérifier pour démarrer delay(60000) quand un mouvement est détecter..

j'espère être assez claire .. et je vous remercie a l'avance de vos lumieres je viens de me mettre au codage depuis 3 mois a peine en hobbies et j'avoue que sa me passionne mais je veux peut 'être aller un peu vite...

Le code (peut être un peu le bordel , me diront les pros, mais faut un début a tous :-D ):

/* MQ-7 Carbon Monoxide Sensor Circuit with Arduino */

const int AOUTpin=0;//the AOUT pin of the CO sensor goes into analog pin A0 of the arduino
const int DOUTpin=8;//the DOUT pin of the CO sensor goes into digital pin D8 of the arduino
const int exemple=10;
const int led=11;//led
const int Relay=6;//pin Signal du relay
const int isObstaclePin =9; // This is our input pin
int isObstacle=HIGH;
;int val;
// HIGH MEANS NO OBSTACLE

int d;


int limit;

int value;
int value1;

void setup() {

Serial.begin(115200);//sets the baud rate
pinMode(DOUTpin, INPUT);//sets the pin as an input to the arduino
pinMode(Relay, OUTPUT);

pinMode (isObstaclePin,INPUT);
digitalWrite (isObstaclePin, LOW);//Sensor output
pinMode(led, OUTPUT);//active led + clignotement avant demarrage
//digitalWrite(led, LOW);
//delay (100);
//digitalWrite(led, HIGH);
//delay (114);
//digitalWrite(led, LOW);





}

void loop()
{
isObstacle = digitalRead(isObstaclePin);
if (isObstacle == LOW)
{
Serial.println("mouvement detecter:demmarage de 60 secondes");
digitalWrite(led, HIGH);
digitalWrite(Relay ,HIGH);
delay (60000);
}
else
{
Serial.println("INFRAROUGE ACTIVER");
digitalWrite(led, LOW);
}

d=analogRead(AOUTpin);
value= analogRead(AOUTpin);//reads the analaog value from the CO sensor's AOUT pin
limit= digitalRead(DOUTpin);//reads the digital value from the CO sensor's DOUT pin
Serial.print("///Taux de Co2 actuel: ");
Serial.println(value);//prints the CO value
Serial.print(" DEPART =99 ");
Serial.print(limit);//prints the limit reached as either LOW or HIGH (above or underneath)





//if (d>89<94)
//{digitalWrite (led,HIGH);
//delay(300);
//digitalWrite(led ,LOW);
//delay(3000);}

if (d>95<98){
digitalWrite(led, HIGH);
delay (47);
digitalWrite(led , LOW);
delay(1000);

}
if (d>102){

digitalWrite(Relay, HIGH);
digitalWrite(led, HIGH);





}

else
{

//digitalWrite(led,LOW);
//delay (100);
//digitalWrite(led,HIGH);
//delay(45);
//igitalWrite(led ,LOW);

digitalWrite(Relay, LOW);
delay (5000);}}




//if threshold not reached, LED remains off




1 réponse

Utilisateur anonyme
21 juin 2016 à 17:15
Bonjour,
En gros, si j'ai bien compris, vous souhaitez vérifier constamment si il y a quelqu'un via le détecteur de présence, et si il y a quelqu'un vérifier le niveau de CO2 ? Ce qui entraînera ou non les ventilo ?

Si il s'agit de ça le programme doit être sous la forme suivante :

void setup()
{
   //votre code
}

void loop()
{
    int a = 0;
    while(a = 0)
    {
       //verifier presence
     }
     //verification CO2
     //ventilo
}


Sinon, vous pouvez toujours utiliser des interruptions.
0
toflfou Messages postés 1320 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 6 septembre 2023 174
4 juil. 2016 à 15:35
Bonojur merci de votre reponse .. j'ai fini le projet depuis longtemps .. j'y ai même rajouter un relay avec radio par telecommande avec un 2 eme arduino +sa donne sa :-D
/* MQ-7 Carbon Monoxide Sensor Circuit with Arduino */
const int AOUTpin=0;//the AOUT pin of the CO sensor goes into analog pin A0 of the arduino
const int DOUTpin=8;//the DOUT pin of the CO sensor goes into digital pin D8 of the arduino
const int exemple=10;
const int led=11;//led
const int Relay=6;
int Rela=LOW;

const int isObstaclePin =9; // This is our input pin
int isObstacle=HIGH;
;int val;
int d;
int limit;
int value;
int mouv=HIGH;


void setup() {

Serial.begin(115200);//sets the baud rate
pinMode(DOUTpin, INPUT);//sets the pin as an input to the arduino
pinMode(Relay, OUTPUT);
;

pinMode (isObstaclePin,INPUT);
digitalWrite (isObstaclePin, LOW);//Sensor output
pinMode(led, OUTPUT);//active led + clignotement avant demarrage
//digitalWrite(led, LOW);
//delay (100);
//digitalWrite(led, HIGH);
//delay (114);
//digitalWrite(led, LOW);





}

void loop () {{{
{int isObstacle = digitalRead(isObstaclePin);
int Rela= digitalRead(Relay);

if ((isObstacle == LOW)&&(Rela==LOW))
{

Serial.println("Mouvement!<<<<>>>>>demmarage de 2 min");

digitalWrite(led,LOW);
delay (50);
digitalWrite(led,HIGH);
delay(30);
digitalWrite(led ,LOW);
delay (50);
digitalWrite(led,HIGH);
delay (30);
digitalWrite(led ,LOW);

digitalWrite(led,LOW);
delay (50);
digitalWrite(led,HIGH);
delay(30);
digitalWrite(led ,LOW);
delay (50);
digitalWrite(led,HIGH);
delay (30);
digitalWrite(led ,LOW);
digitalWrite(led, HIGH);

delay (50);
digitalWrite(led, LOW);
digitalWrite(Relay ,HIGH);
delay (120500);



}
if((isObstacle==LOW)&&(Rela==HIGH))
{
Serial.println("arret forcer pendant 1 Minute");
digitalWrite(led,LOW);
delay (50);
digitalWrite(led,HIGH);
delay(30);
digitalWrite(led ,LOW);
delay (50);
digitalWrite(led,HIGH);
delay (30);
digitalWrite(led ,LOW);
digitalWrite(Relay,LOW);


delay(60000);

}
else {



Serial.println("INFRAROUGE ACTIVER");
digitalWrite(led, HIGH);
delay (47);
digitalWrite(led ,LOW);
delay(1000);

}



d=analogRead(AOUTpin);
value= analogRead(AOUTpin);//reads the analaog value from the CO sensor's AOUT pin
limit= digitalRead(DOUTpin);//reads the digital value from the CO sensor's DOUT pin
Serial.print("///Taux de Co2 actuel: ");
Serial.println(value);//prints the CO value
Serial.print(" TAUX MAX DE 135 ATTEINT >>ACTIVATION DES VENTILO DELAY 8000 ");
Serial.print(limit);//prints the limit reached as either LOW or HIGH (above or underneath)





//if (d>89<94)
//{digitalWrite (led,HIGH);
//delay(300);
//digitalWrite(led ,LOW);
//delay(3000);}

//if (d>55){
//digitalWrite(led, HIGH);
//delay (47);
//digitalWrite(led , LOW);
// delay(1000);

//}
if (d>60){{

digitalWrite(Relay, HIGH);
digitalWrite(mouv ,LOW);

digitalWrite(led, HIGH);
delay(100);
digitalWrite(led ,LOW);
delay (60000);





}}

else


digitalWrite(led,LOW);
delay (100);
digitalWrite(led,HIGH);
delay(60);
digitalWrite(led ,LOW);
delay (100);
digitalWrite(led,HIGH);
delay (60);
digitalWrite(led ,LOW);

delay(8000);

{digitalWrite(Relay, LOW);

}}}}}
0
toflfou Messages postés 1320 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 6 septembre 2023 174
4 juil. 2016 à 15:37
bon je vois que c'est l’ancien code .. mais après correction des divs delay sa fonctionne en tous cas ..maintenant je suis sur l'ov7670 sans fifo sa fonctionne mais je n'est pas la couleur .. sa viendra .. Bonne journée
0