Go Down

Topic: Problème avec Millis (Read 215 times) previous topic - next topic

Tux666

Bonjour,

J'ai un problème avec Millis, je cherche a faire un système d'arrosage ou dans :

1er temps, pas d'arrosage pendent  30 secondes (Interval_Arrosage) - Zone Programme Principale
Jusque-là tous est OK, je suis bien a OFF 6 fois sur le moniteur et il switch bien a ON après mes 30 sec.


Code: [Select]

//------------------------------- Programme Principale -------------------------------
//
void Arrosage(float taux)                                 // Définir Fonction
{
   EtatBouton = digitalRead(Bouton);                    //On lit l'état du bouton
   boolean EtatVanne = digitalRead(EtatVanne);                  // Control Vanne ON/OFF
  
   // Récupére la valeur actuelle de millis()
   unsigned long currentMillis = millis();
  
      if((currentMillis - Compteur_Arrosage) > Interval_Arrosage) {  // Delay temps Interval                 // Delay temps Interval  
      if (EtatBouton==0 || taux < 10 == taux < 90) {     // Si fouchette taux arrosage ON
      Compteur_Arrosage = millis();
      Arrosage_ON(taux);                                  // Exécute Sous Programme
      }}
      if (taux > 90) {                               // Si taux haut atteint
      Compteur_Arrosage = millis();
      Arrosage_OFF(taux);                                 // Exécute Sous Programme
      }
}




2ème temps : Problème une fois que je suis dans la Zone Sous Programme Arrosage ON, il devrait après 15 sec passer a OFF, rien à faire il reste sur ON, c'est comme si Compteur_Vanne ne peut pas être récupéré

Code: [Select]


//--------------------------- Sous Programme Arrosage ON ---------------------------
//
void Arrosage_ON(float taux)                                  // Définir Fonction
{
  // Récupére la valeur actuelle de millis()
  unsigned long currentMillis = millis();
  
          EtatVanne = 0;                                         // Définir Vanne1 ON
  //        if((currentMillis - Compteur_Vanne) > Ouverture_Vanne) {                  // Delay temps Interval          
          if (EtatBouton==0 || taux < 10 && taux < 90)  {    // Si état Bouton OU fouchette taux = Arrosage ON
  //        Compteur_Vanne = currentMillis;
          digitalWrite(Ralay,HIGH);
          digitalWrite(LedVert,HIGH);                        //Allumage Led Vert
          digitalWrite(LedRouge,LOW);  
          }
          else if (((currentMillis - Compteur_Vanne) > Ouverture_Vanne) || taux > 90) {     // Si taux haut atteint
      //    if (((currentMillis - Compteur_Vanne) > Ouverture_Vanne) || taux > 90) {     // Si taux haut atteint  
          Compteur_Vanne = currentMillis;
          Arrosage_OFF(taux);                                 // Exécute Sous Programme
          }
}





Merci

J-M-L

Il est où le reste du code?
Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

Tux666

Voila


Code: [Select]


// -------------------- Arrosages Plante N°1 --------------------

//////////////////////////////////////////////////////////////////////////// Declaration des variables ////////////////////////////////////////////////////////////////////////////
// Variables Constantes : Ne change pas.
// Utilisé le numéro de la broche sur laquelle est connectée le capteur pour le définir :
//
const int pinA1 = A7;                  // Pin Analogique du capteur (A3 Ardiono Mini/Pro, A7 Arduino Nano)
const int Ralay = 2;                   // Pin Relay (électrovanne)
const int Sensor = 3;                  // Pin d'alimentation du Capteur Moisture
const int Bouton = 4;                  //broche où on lira la valeur renvoyée par le capteur
const int LedVert = 5;                 //Led Verte (Arrosages ON)
const int LedRouge = 6;                //Led Rouge (Arrosages OFF)

// Variables : Qui change
//
boolean EtatBouton;                    //variable où on stockera l'état du bouton
boolean EtatVanne;                     //variable où on stockera l'état Vanne

// En général, vous devez utiliser "unsigned long" pour les variables qui maintiennent le temps
// La valeur deviendra rapidement trop grand pour un int pour stocker
// Variables Constantes Longue : Ne change pas.
//
unsigned long Interval_Arrosage = 30000;    // Temps d'attente entre les arrosages 60000
unsigned long Ouverture_Vanne = 15000;      // Temps d'ouverture Vanne en millisecondes

// Variables Longue : Qui change
//
unsigned long Compteur_Arrosage = 0 ;    // Compteur de Temps en millisecondes
unsigned long Compteur_Vanne = 0 ;       // Compteur de Temps en millisecondes
///////////////////////////////////////////////////////////////////////////////// Initialisation //////////////////////////////////////////////////////////////////////////////////
//

void setup()
{
 Serial.begin(9600);
 pinMode(pinA1,INPUT);
 pinMode(Ralay,OUTPUT);
 pinMode(Sensor,OUTPUT);
 pinMode(Bouton,INPUT);          //on créé une entrée : on reçoit l'état du bouton
 pinMode(LedVert,OUTPUT);
 pinMode(LedRouge,OUTPUT); 
}


/////////////////////////////////////////////////////////////////////////////// Boucle Principale /////////////////////////////////////////////////////////////////////////////////
//
void loop() { 
//Action     
boolean EtatBouton = digitalRead(Bouton);                     // Déclartation variable boolean état du bouton
digitalWrite(Sensor,HIGH);
float h=analogRead(pinA1);
float taux = (1023.0-h)/6.45;           //6.65; (My valeur 6.45 capeur Non isoler;) (Tester avec 9.10) 3.50 New sonde
delay(5000);  // Donner suffisamment de temps pour ouvrir le moniteur série après le téléchargement
Serial.println("Starting...");
Serial.print(h);
Serial.print("     ");
Serial.print(taux);
Serial.println("%");
Serial.print("Arrosage ON(0)/OFF(1)");
Serial.print(" ");
Serial.println(EtatVanne);
Serial.print("Bouton   ON(0)/OFF(1)");
Serial.print(" ");
Serial.println(EtatBouton);
Arrosage(taux);
digitalWrite(Sensor,LOW);     
// End of Action
}
///////////////////////////////////////////////////////////////////////////// Fonction Personnalisée //////////////////////////////////////////////////////////////////////////////
//
//------------------------------- Programme Principale -------------------------------
//
void Arrosage(float taux)                                 // Définir Fonction
{
   EtatBouton = digitalRead(Bouton);                    //On lit l'état du bouton
   boolean EtatVanne = digitalRead(EtatVanne);                  // Control Vanne ON/OFF
 
   // Récupére la valeur actuelle de millis()
   unsigned long currentMillis = millis();
   
      if((currentMillis - Compteur_Arrosage) > Interval_Arrosage) {  // Delay temps Interval                 // Delay temps Interval 
      if (EtatBouton==0 || taux < 10 == taux < 90) {     // Si fouchette taux arrosage ON
      Compteur_Arrosage = millis();
      Arrosage_ON(taux);                                  // Exécute Sous Programme
      }}
      if (taux > 90) {                               // Si taux haut atteint
      Compteur_Arrosage = millis();
      Arrosage_OFF(taux);                                 // Exécute Sous Programme
      }
}
//--------------------------- Sous Programme Arrosage ON ---------------------------
//
void Arrosage_ON(float taux)                                  // Définir Fonction
{
  // Récupére la valeur actuelle de millis()
  unsigned long currentMillis = millis();
 
          EtatVanne = 0;                                         // Définir Vanne1 ON
  //        if((currentMillis - Compteur_Vanne) > Ouverture_Vanne) {                  // Delay temps Interval         
          if (EtatBouton==0 || taux < 10 && taux < 90)  {    // Si état Bouton OU fouchette taux = Arrosage ON
  //        Compteur_Vanne = currentMillis;
          digitalWrite(Ralay,HIGH);
          digitalWrite(LedVert,HIGH);                        //Allumage Led Vert
          digitalWrite(LedRouge,LOW); 
          }
          else if (((currentMillis - Compteur_Vanne) > Ouverture_Vanne) || taux > 90) {     // Si taux haut atteint
      //    if (((currentMillis - Compteur_Vanne) > Ouverture_Vanne) || taux > 90) {     // Si taux haut atteint   
          Compteur_Vanne = currentMillis;
          Arrosage_OFF(taux);                                 // Exécute Sous Programme
          }
}
   

//-------------------------- Sous Programme Arrosage OFF --------------------------
//
void Arrosage_OFF(float taux)                                // Définir Fonction
{
  // Récupére la valeur actuelle de millis()
  unsigned long currentMillis = millis();
     
          EtatVanne = 1;                                        //  Définir Vanne1 OFF
          if (EtatBouton==1 || taux > 10) {                 // Si fouchette taux = Arrosage OFF
          digitalWrite(Ralay,LOW);
          digitalWrite(LedVert,LOW);
          digitalWrite(LedRouge,HIGH);                     //Allumage Led Rouge 
          }
          else if (((currentMillis - Compteur_Vanne) < Ouverture_Vanne) || taux < 10) {     // Si taux haut atteint
   //       else if (taux < 10) {                             // Si taux bas atteint
          Compteur_Vanne = currentMillis;         
          Arrosage_ON(taux);                                // Exécute Sous Programme
          }
}
/////////////////////////////////////////////////////////////////////////////////////// FIN ///////////////////////////////////////////////////////////////////////////////////////



J-M-L

#3
Sep 05, 2017, 11:01 pm Last Edit: Sep 05, 2017, 11:02 pm by J-M-L
Ceci taux < 10 == taux < 90 ne fait sans doute pas ce que vous pensez...
Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

Tux666

Je viens de faire test en modifient par taux < 10, sa change rien c'est pareil  

Normalement, ci taux < 10 == taux < 90 est ok, il me permet lors de l'arrosage de continue le remplissage jusqu'à mes 90%, malgré l'Interval_Arrosage et inversement pour l'assèchement.

Si je ne fais pas cela, lors du redémarrage après l'interval, si je suis au dessus des 10% il se met sur OFF
 

Je cherche a supprimer un maximum l'effet électrolyse sur la sonde

j'ai un delay(5000) dans void loop() pour le moniteur, j'ai essayer de le passer en millis, sa passe pour lui mais celui qui suis Interval_Arrosage, n'est pas pris en charge  

Pour résumer au final je cherche
Interval Lecture Moniteur :  1 heure (supprimer un maximum l'effet électrolyse)
Interval_Arrosage = 2 heure
Ouverture_Vanne = 1 minutes a plus suivant débit    

J-M-L

#5
Sep 06, 2017, 12:11 am Last Edit: Sep 06, 2017, 12:42 am by J-M-L
taux < 10 == taux < 90 c'est interprété comme (taux < 10) == (taux < 90) c'est à dire l'égalité entre deux valeurs logiques (vrai ou faux)

Si taux est plus petit que 10 alors il est aussi plus petit que 90 et donc vous regardez si vrai == vrai (ce qui est vrai)

Si taux est plus grand que 90 vous regardez si faux == faux (ce qui est vrai)

Si taux est entre les deux vous avez faux == vrai ce qui est faux

Donc ce que vous avez écrit c'est si (taux inférieur à 10 ou taux supérieur à 90) alors faire xxx

Est-ce votre intention?
(On  écrit généralement cela sous la forme ((taux < 10) || (taux >= 90)))

Le plus simple serait de faire une petite machine à états
Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

Tux666

Merci pour t'as réponse, oui j'avais fait boitier pour teste sa aide

Il y avait bien un problème dans la zone Sous Programme Arrosage OFF

         EtatVanne = 1;                                     // Définir Vanne1 OFF
         if (EtatBouton==1 || taux > 10) {                  // Si fouchette taux = Arrosage OFF  

J'ai remplacer taux > 10 par taux > 90

Et corriger dans Programme Principale taux < 10 == taux < 90 par juste taux < 10

Super sa tourne normalement.

Je fais tester avec millis dans après midi, je te tiens au courant

Merci pour ton aide  :)


Tux666

Voila j'ai modifier et simplifier le code

Code: [Select]


// -------------------- Arrosages Plante N°1 --------------------

//////////////////////////////////////////////////////////////////////////// Declaration des variables ////////////////////////////////////////////////////////////////////////////
// Variables Constantes : Ne change pas.
// Utilisé le numéro de la broche sur laquelle est connectée le capteur pour le définir :
//
const int pinA1 = A7;                  // Pin Analogique du capteur (A3 Ardiono Mini/Pro, A7 Arduino Nano)
const int Relay = 2;                   // Pin Relay (électrovanne)
const int Sensor = 3;                  // Pin d'alimentation du Capteur Moisture
const int Bouton = 4;                  // Broche où on lira la valeur renvoyée par le capteur
const int LedVert = 5;                 // Led Verte (Arrosages ON)
const int LedRouge = 6;                // Led Rouge (Arrosages OFF)

// Variables : Qui change
//
byte EtatBouton;                    // Variable où on stockera l'état du bouton
byte EtatVanne;                     // Variable où on stockera l'état Vanne

// En général, vous devez utiliser "unsigned long" pour les variables qui maintiennent le temps
// La valeur deviendra rapidement trop grand pour un int pour stocker
// Variables Constantes Longue : Ne change pas.
//
unsigned long Interval_Arrosage = 30000;    // Temps d'attente entre les arrosages 60000
unsigned long Ouverture_Vanne = 15000;      // Temps d'ouverture Vanne en millisecondes

// Variables Longue : Qui change
//
unsigned long Compteur_Arrosage = 0 ;    // Compteur de Temps en millisecondes
unsigned long Compteur_Vanne = 0 ;       // Compteur de Temps en millisecondes

unsigned long currentMillis = 0;
///////////////////////////////////////////////////////////////////////////////// Initialisation //////////////////////////////////////////////////////////////////////////////////
//

void setup()
{
 Serial.begin(9600);
 pinMode(pinA1,INPUT);
 pinMode(Relay,OUTPUT);
 pinMode(Sensor,OUTPUT);
 pinMode(Bouton,INPUT);          //On créé une entrée : on reçoit l'état du bouton
 pinMode(LedVert,OUTPUT);
 pinMode(LedRouge,OUTPUT); 
}


/////////////////////////////////////////////////////////////////////////////// Boucle Principale /////////////////////////////////////////////////////////////////////////////////
//
void loop() { 
//Action     
byte EtatBouton = digitalRead(Bouton);           // Déclartation variable boolean état du bouton
// byte EtatVanne = digitalRead(Relay);           // NEW
digitalWrite(Sensor,HIGH);
float h=analogRead(pinA1);
float taux = (1023.0-h)/6.45;                      // 6.65; (My valeur 6.45 capeur Non isoler;) (Tester avec 9.10) 3.50 New sonde
delay(5000);                                       // Donner suffisamment de temps pour ouvrir le moniteur série après le téléchargement
Serial.println("Starting...");
Serial.print(h);
Serial.print("     ");
Serial.print(taux);
Serial.println("%");
Serial.print("Arrosage ON(0)/OFF(1)");
Serial.print(" ");
Serial.println(EtatVanne);
Serial.print("Bouton   ON(0)/OFF(1)");
Serial.print(" ");
Serial.println(EtatBouton);
Arrosage(taux);
digitalWrite(Sensor,LOW);     
// End of Action
}
///////////////////////////////////////////////////////////////////////////// Fonction Personnalisée //////////////////////////////////////////////////////////////////////////////
//
//------------------------------- Programme Principale -------------------------------
//
void Arrosage(float taux)                                 // Définir Fonction
{
   
   EtatBouton = digitalRead(Bouton);                      // On lit l'état du bouton

      // Récupére la valeur actuelle de millis()
   //   unsigned long currentMillis = millis();
      currentMillis = millis();
      EtatVanne = digitalRead(Relay);       
   
      if((currentMillis - Compteur_Arrosage) >= Interval_Arrosage) {  // Delay temps Interval     
      Compteur_Arrosage = currentMillis;     
      if (EtatBouton==0 || taux < 10) {                  // Si fouchette taux arrosage ON 
      EtatVanne = 0;                                     // Déffinir EtatVanne a 0
      digitalWrite(Relay,HIGH);
      digitalWrite(LedVert,HIGH);                        // Allumage Led Vert
      digitalWrite(LedRouge,LOW);   
  //    }}   
      }
      else if (EtatVanne==0)  {
      if (currentMillis - Compteur_Vanne >= Ouverture_Vanne) {
      Compteur_Vanne = currentMillis;             
      EtatVanne = 1;                                     // Déffinir EtatVanne a 1
      digitalWrite(Relay,LOW);
      digitalWrite(LedVert,LOW);
      digitalWrite(LedRouge,HIGH);                      // Allumage Led Rouge             
      }}
      }   
}
     
/////////////////////////////////////////////////////////////////////////////////////// FIN ///////////////////////////////////////////////////////////////////////////////////////


Mon premier millis fonctionne correctement, il bloque bien 30 seconde l'arrosage et passe a ON (Interval_Arrosage)

2ème Millis, rien ne se passe il devrait passer a OFF après 15 sec (Ouverture_Vanne)

Merci

Tux666

J'ai fais plusieurs testes

Code: [Select]


// -------------------- Arrosages Plante N°1 --------------------

//////////////////////////////////////////////////////////////////////////// Declaration des variables ////////////////////////////////////////////////////////////////////////////
// Variables Constantes : Ne change pas.
// Utilisé le numéro de la broche sur laquelle est connectée le capteur pour le définir :
//
const int pinA1 = A7;                  // Pin Analogique du capteur (A3 Ardiono Mini/Pro, A7 Arduino Nano)
const int Relay = 2;                   // Pin Relay (électrovanne)
const int Sensor = 3;                  // Pin d'alimentation du Capteur Moisture
const int Bouton = 4;                  // Broche où on lira la valeur renvoyée par le capteur
const int LedVert = 5;                 // Led Verte (Arrosages ON)
const int LedRouge = 6;                // Led Rouge (Arrosages OFF)

// Variables : Qui change
//
byte EtatBouton;                    // Variable où on stockera l'état du bouton
byte EtatVanne;                     // Variable où on stockera l'état Vanne

// En général, vous devez utiliser "unsigned long" pour les variables qui maintiennent le temps
// La valeur deviendra rapidement trop grand pour un int pour stocker
// Variables Constantes Longue : Ne change pas.
//
unsigned long Interval_Arrosage = 30000;    // Temps d'attente entre les arrosages 60000
unsigned long Ouverture_Vanne = 15000;      // Temps d'ouverture Vanne en millisecondes
unsigned long Interval_Moniteur = 5000;     // Temps d'attente entre les lecture Moniteur (Sonde non active)

// Variables Longue : Qui change
//
unsigned long Compteur_Arrosage = 0 ;    // Compteur de Temps en millisecondes
unsigned long Compteur_Vanne = 0 ;       // Compteur de Temps en millisecondes
unsigned long Compteur_Moniteur = 0 ;    // Compteur de Temps en millisecondes
// unsigned long currentMillis = 0;
///////////////////////////////////////////////////////////////////////////////// Initialisation //////////////////////////////////////////////////////////////////////////////////
//

void setup()
{
 Serial.begin(9600);
 pinMode(pinA1,INPUT);
 pinMode(Relay,OUTPUT);
 pinMode(Sensor,OUTPUT);
 pinMode(Bouton,INPUT);          //On créé une entrée : on reçoit l'état du bouton
 pinMode(LedVert,OUTPUT);
 pinMode(LedRouge,OUTPUT); 
}


/////////////////////////////////////////////////////////////////////////////// Boucle Principale /////////////////////////////////////////////////////////////////////////////////
//
void loop() { 
//Action     
byte EtatBouton = digitalRead(Bouton);           // Déclartation variable boolean état du bouton
EtatVanne = digitalRead(Relay);           // NEW
digitalWrite(Sensor,HIGH);
float h=analogRead(pinA1);
float taux = (1023.0-h)/6.45;                      // 6.65; (My valeur 6.45 capeur Non isoler;) (Tester avec 9.10) 3.50 New sonde
if((millis() - Compteur_Moniteur) > Interval_Moniteur) {
Compteur_Moniteur = millis();
// delay(5000);                                       // Donner suffisamment de temps pour ouvrir le moniteur série après le téléchargement
Serial.println("Starting...");
Serial.print(h);
Serial.print("     ");
Serial.print(taux);
Serial.println("%");
Serial.print("Arrosage ON(0)/OFF(1)");
Serial.print(" ");
Serial.println(EtatVanne);
Serial.print("Bouton   ON(0)/OFF(1)");
Serial.print(" ");
Serial.println(EtatBouton);
Arrosage(taux);
digitalWrite(Sensor,LOW);     
// End of Action
}}
///////////////////////////////////////////////////////////////////////////// Fonction Personnalisée //////////////////////////////////////////////////////////////////////////////
//
//------------------------------- Programme Principale -------------------------------
//
void Arrosage(float taux)                                 // Définir Fonction
{
   
   EtatBouton = digitalRead(Bouton);                      // On lit l'état du bouton

      // Récupére la valeur actuelle de millis()
   //   unsigned long currentMillis = millis();
  //    currentMillis = millis();
      EtatVanne = digitalRead(Relay);       
   
      if((millis() - Compteur_Arrosage) > Interval_Arrosage) {  // Delay temps Interval     
      Compteur_Arrosage++; // On incrémente le compteur
 //     EtatVanne = 0;                                     // Déffinir EtatVanne a 0
      digitalWrite(Relay,HIGH);
      digitalWrite(LedVert,HIGH);                        // Allumage Led Vert
      digitalWrite(LedRouge,LOW);   
      Compteur_Arrosage = millis();
      Compteur_Arrosage = 0; // On remet à zéro pour refaire le cycle de la fonction
      Compteur_Vanne = millis();
      Compteur_Vanne = 0; // On remet à zéro pour refaire le cycle de la fonction
      }
      else { ((millis() - Compteur_Vanne) > Ouverture_Vanne);               
      Compteur_Vanne++; // On incrémente le compteur
 //     EtatVanne = 1;                                     // Déffinir EtatVanne a 1
      digitalWrite(Relay,LOW);
      digitalWrite(LedVert,LOW);
      digitalWrite(LedRouge,HIGH);                      // Allumage Led Rouge             
      Compteur_Vanne = millis();
      Compteur_Vanne = 0; // On remet à zéro pour refaire le cycle de la fonction
      Compteur_Arrosage = millis();
      Compteur_Arrosage = 0; // On remet à zéro pour refaire le cycle de la fonction
      }
}
/////////////////////////////////////////////////////////////////////////////////////// FIN ///////////////////////////////////////////////////////////////////////////////////////


Millis Compteur_Moniteur : OK
Millis Compteur_Arrosage : OK
Millis Compteur_Vanne : KO, ne veut pas passer sur  else { ((millis() - Compteur_Vanne) > Ouverture_Vanne);

J'ai beau le tourner dans tous les sens sa change rien



Tux666

Après plusieurs tests

J'ai bien ma pause Interval_Arrosage de 30 sec au démarrage , sa passe en arrosage, Ouverture_Vanne devrait bloquer l'arrosage après 15 sec ce qui n'est pas le qua, a la place sa fait discothèque je passe d'un état a un autre, et Interval_Arrosage n'est plus pris en compte   

Code: [Select]


//------------------------------- Programme Principale -------------------------------
//
void Arrosage(float taux)                                 // Définir Fonction
{
   
   EtatBouton = digitalRead(Bouton);                      // On lit l'état du bouton

      // Récupére la valeur actuelle de millis()
   //   unsigned long currentMillis = millis();
  //    currentMillis = millis();
      EtatVanne = digitalRead(Relay);       
   
//-------------------- Arrosage ON ----------------         
      if ((millis() - Compteur_Arrosage) > Interval_Arrosage) {       
      Compteur_Arrosage++; // On incrémente le compteur pour les 50ms
 //     EtatVanne = 0;                                     // Déffinir EtatVanne a 0
      digitalWrite(Relay,HIGH);
      digitalWrite(LedVert,HIGH);                        // Allumage Led Vert
      digitalWrite(LedRouge,LOW);   
      Compteur_Arrosage = millis();
 //     Compteur_Arrosage = 0; // On remet à zéro pour refaire le cycle de la fonction (Fou la merde)
 //     Compteur_Vanne = millis();
      Compteur_Vanne = 0; // On remet à zéro pour refaire le cycle de la fonction
      }
//-------------------- Arrosage OFF ----------------
      else { ((millis() - Compteur_Vanne) > Ouverture_Vanne); //&& ((millis() - Compteur_Arrosage) < Interval_Arrosage));               
      Compteur_Vanne++; // On incrémente le compteur pour les 50ms
 //     EtatVanne = 1;                                     // Déffinir EtatVanne a 1
      digitalWrite(Relay,LOW);
      digitalWrite(LedVert,LOW);
      digitalWrite(LedRouge,HIGH);                      // Allumage Led Rouge             
      Compteur_Vanne = millis();
//      Compteur_Vanne = 0; // On remet à zéro pour refaire le cycle de la fonction
//      Compteur_Arrosage = millis();
      Compteur_Arrosage = 0; // On remet à zéro pour refaire le cycle de la fonction (OK)
      }
}


Go Up