Bonjour,
J’ai 3 temporisations avec fonction Millis
Interval_Moniteur = 5000 (Attente 5 secs lecture moniteur série) OK
Interval_Arrosage = 30000 (Attente 30 secs entre arrosage) OK la 1er fois, puis plus après
Ouverture_Vanne = 15000 (15 secs, ouverture vanne, puis OFF) Ne fonctionne pas, ça fait discothèque, passe de ON /OFF toutes les 5 secs
C’est comme si les compteurs Vanne et Arrosage ne se remettais pas à zéro
Merci
//
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)
//
byte EtatBouton; // Variable où on stockera l'état du bouton
byte EtatVanne; // Variable où on stockera l'état Vanne
//
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)
//
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
//
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);
}
//
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
}}
//
void Arrosage(float taux) // Définir Fonction
{
EtatBouton = digitalRead(Bouton); // On lit l'état du bouton
EtatVanne = digitalRead(Relay);
//-------------------- Arrosage ON ----------------
if ((millis() - Compteur_Arrosage) > Interval_Arrosage) {
Compteur_Arrosage++; // On incrémente le compteur
digitalWrite(Relay,LOW);
digitalWrite(LedVert,HIGH); // Allumage Led Vert
digitalWrite(LedRouge,LOW);
Compteur_Arrosage = millis();
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); // Fermeture vanne
Compteur_Vanne++; // On incrémente le compteur
digitalWrite(Relay,HIGH);
digitalWrite(LedVert,LOW);
digitalWrite(LedRouge,HIGH); // Allumage Led Rouge
Compteur_Vanne = millis();
Compteur_Arrosage = millis();
Compteur_Arrosage = 0; // On remet à zéro pour refaire le cycle de la fonction (OK)
}
}
