Bonjour à tous,
En ces temps caniculaires, je désire faire plaisir à la famille et j'ai créé un petit système me permettant d'activer la pompe de ma piscine durant 2 minutes toutes les 30min afin de faire chauffer de l'eau dans un circuit de tuyaux et de réinjecter cette eau dans la piscine pour la faire chauffer.
J'ai donc créé une fonction toute bête qui déclenche un relai toutes les 30min.
Cependant, la nuit, ce système est inutile et il serait cool que la pompe fonctionne en continu pour qu'elle filtre l'eau plus efficacement.
J'ai alors créé une autre fonction me permettant de laisser la pompe allumée. C'est là que les choses se corsent. Je désire mettre un bouton pour pouvoir choisir entre les deux modes :
Mode 0 : Réchauffement
Mode 1 : Filtrage continu
Ce que je fais, c'est que je branche un bouton poussoir sur une des entrées avec une résistance pullup. Je check l'état de cette entrée en permanence. Lorsque je détecte un changement d'état, j'incrémente un compteur. Comme je n'ai besoin que de deux modes, je fais un modulo de 2 sur ce compteur. Si le modulo est de 0 (c'est-à-dire que le compteur a un nombre pair), j'enclenche le mode 0.Si le modulo est de 1, j’enclenche le mode1.
Sur le papier, cela ne me parait pas mauvais, mais lorsque j'écris mon code, je n'arrive pas à passer d'une fonction à l'autre. Que je sois dans le mode 1 ou dans le mode 0, c'est la même fonction qui s'enclenche...
J'ai également essayé en mettant la variable mode booléenne, mais rien n'y fait...
int InBouton;
int sortie;
int compteur; //compteur d'appuies
int mode; //mode, determine en fonction de la parite du compteur
void setup() {
Serial.begin(9600);
sortie=9;
InBouton=10;
pinMode(sortie, OUTPUT);
pinMode(InBouton, INPUT_PULLUP);
compteur = 0;
mode = 0;
}
void loop() {
boolean etat=digitalRead(InBouton);
if(etat == 0)
{
compteur ++;
Serial.print("Compteur ");
Serial.println(compteur);
//On regarde si le nombre de fois ou on a appuie est pair ou impaire
mode = compteur % 2;
Serial.print("Mode ");
Serial.println(mode);
//Selon la partie, on met un mode ou l'autre
if (mode = 0)
{
pompe_rechauffement();
Serial.println("pompe_rechauffement");
}
else
{
pompe_continu();
Serial.println("pompe_continu");
}
delay(1000);
}
}
void pompe_rechauffement() {
digitalWrite(sortie, HIGH);
delay(120000);
digitalWrite(sortie,LOW);
delay(1680000);
}
void pompe_continu() {
digitalWrite(sortie, HIGH);
}
J’espère ne pas trop avoir mis d'aberrations dans mon code, n'hésitez pas à me corriger !
Dans l'attente de vos conseils, merci beaucoup !