Besoin d'un petit coup de main pour plusieur delay arduino:-D
toflfou
Messages postés
1333
Date d'inscription
Statut
Membre
Dernière intervention
-
toflfou Messages postés 1333 Date d'inscription Statut Membre Dernière intervention -
toflfou Messages postés 1333 Date d'inscription Statut Membre Dernière intervention -
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 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
A voir également:
- Besoin d'un petit coup de main pour plusieur delay arduino:-D
- Coup d'un soir avis ✓ - Forum Consommation & Internet
- Petit 1 comme ² ✓ - Forum Windows
- La main de la titi popo ✓ - Forum Musique / Radio / Clip
- A javascript error occurred in the main process - Forum Matériel & Système
- Petit 2 ✓ - Forum Bureautique
1 réponse
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 :
Sinon, vous pouvez toujours utiliser des interruptions.
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.
/* 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);
}}}}}