Remplissage d'une cuve

Bonjour à tous,
J’aurais besoin de vos lumière svp…
Je vous explique
J’ai besoin de remplir un recipient (pompe commandée par relai) quand il est vide (!) ou presque et si la commande de mode automatique est active.
J’utilise un capteur de type “water sensor” et un interrupteur
Mon code est le suivant :

// Pompage automatique
if (analogRead(A8) < 400 && buttonState == 1){ // si il n y a plus d eau
digitalWrite(42, 0); // on pompe
}
else {
digitalWrite(42, 1); // sinon on ne pompe pas
}

Seulement voilà, dès que le niveau de remplissage est atteint, ma pompe s’arrete… ça c’est plutot bien MAIS juste un peu apres la pompe repart …

Il me faudrait arreter la pompe pour un seuil de remplissage plus elevé (par exemple 800)…

Une idée de comment je pourrais faire ?

Un grand merci… et bon weekend aussi :slight_smile:

ce capteur doit servir à faire un complément de niveau
d’où ma question:

quand ton bac est vide ou lorsque le capteur ne trempe plus ( ou presque)?
et quand ton interrupteur " automatique" est sur “on”.

if (analogRead(A8) < 400 && buttonState == 1){ // si il n y a plus d eau

if (AnalogRead(A8)<400)&&(buttonState==1)

si tu n’as pas un passage franc de 399 à 400, ta pompe doit “hésiter” à plusieurs reprises

Ben c'est pour ça qu'il me faudrait un

je remplis sir le niveau est inférieur à 400 et le bouton de validation sur OK j’arrête de remplir quand le niveau est supérieur à 850....

Comment je peux faire ça ?

bonjour,
tu réponds toi même à ta question :slight_smile:

si (niveau <400 && bouton ==OK && test == 0 ) test = 1
si (niveau < 850 && test == 1){
pompe ON
}else{
pompe OFF
test =0
}

à toi de mettre ca en code

phil77560: Ben c'est pour ça qu'il me faudrait un

je remplis sir le niveau est inférieur à 400 et le bouton de validation sur OK j’arrête de remplir quand le niveau est supérieur à 850....

Comment je peux faire ça ?

bonjour ça s’appelle un hystérésis il faut memoriser ta situation actuelle et definir les 2 points "niveau haut et bas" la pompe est ON jusqu'à atteindre le niveau haut , si l'etat actuel est bas la pompe est OFF jusqu'à atteindre le niveau bas , si l'etat actuel est haut

Pourquoi ne pas mettre simplement deux interrupteurs à flotteur (un au niveau min, un au niveau max) ?

infobarquee:
bonjour,
tu réponds toi même à ta question :slight_smile:

si (niveau <400 && bouton ==OK && test == 0 ) test = 1
si (niveau < 850 && test == 1){
pompe ON
}else{
pompe OFF
test =0
}

à toi de mettre ca en code

Oui, justement c’est une de mes difficultés car je suis novice !!

si t'es pas capable de remplacer un si par un if et mettre des ; à la fin des lignes, faudrait voir a faire les exemples de l'ide pour comprendre le schéma et le codage.

infobarquee: si t'es pas capable de remplacer un si par un if et mettre des ; à la fin des lignes, faudrait voir a faire les exemples de l'ide pour comprendre le schéma et le codage.

ok, merci de ta compréhension et pour ton conseil ;)

voici ce que voulait te dire infobarquee

int interrupteur = 3; //interrupteur “automatique/manuel”
int capteur = A0; //capteur de niveau_____________attention chez toi, c’est A8
float niveau = 0; //niveau du liquide
int automatique = 0; // en manuel par défaut
int test = 0; //gère l’hystérésis ( empeche un “bagottage” de la pompe
void setup() {
pinMode(capteur, INPUT); //le retour capteur est cablé sur l’entrée analogique Ax
pinMode(interrupteur, INPUT);//le retour interrupteur est cablé sur la pinoche 3
}
void loop() {
niveau = analogRead(capteur); // on controle le niveau du liquide
automatique = digitalRead(interrupteur); // on regarde si l’interrupteur est sur automatique

if ((niveau < 400) && (automatique == 1)&&(test==0)){test=1;} //si niveau trop bas et en mode auto
//“test” autorise une mise en marche de la pompe

if ((niveau < 850) && (test == 1)) //si niveau trop bas et en mode autorisation de pompage
{
digitalWrite(42, 0); //on pompe
}
else{
digitalWrite(42, 1); // on ne pompe pas
test = 0;
}
}
/*
si (niveau <400 && bouton ==OK && test == 0 ) test = 1
si (niveau < 850 && test == 1){
pompe ON
}else{
pompe OFF
test =0
}
*/

si tu lui mache le boulot :( si c'est pour un exam, il aura pas fait grand chose ;) surtout qu'il poste à chaque fois la même question dans le forum anglais.

ok, j'avions point vu...

bonsoir, non ce n'est pas pour un exam.... il y a bien longtemps que je ne suis plus etudiant, Bien au contraire !!! Merci dfg pour ton code....C'est sympa... tes explications sont top ! Boulot maché oui , c'est vrai .... Tu sais infobarqué, quand tu balances de indices comme ceux que tu as donné, et je t'en remercie aussi, j'aurais aimé avoir quelques explication aussi quant à ce que tu ecrivais... Imagine un prof de math qui balance des équations au tableau et qui dit : ben maintenant debrouillez vous, vous avez votre bouquin.... à quoi sert il ?.... comprends tu ce que je veux dire ?... L'explication de mes multiples messages : J'aime bien avoir plusieurs approches différentes d'un même problème...suivant leurs expériences, leurs connaissances, les membres donnent des réponses multiples... ça me permet de mieux m'approprier le truc. Je n'ai pas de connaissances en programmation, je ne suis qu’électronicien, j'ai bien fait un peu de Pascal, de basic mais il y a bien 30 ans !.... donc, pardonnez mon incompétence, ma curiosité... Je pense que les forums sont mieux que des recherches faites sur le net. Bonne soirée et merci encore à tous

désolé si je t'ai froissé, mais en ce moment les demandes à l'aide pour les exams, ca va un temps et ton sujet était pile poil une demande déjà faite pour un exam il y a peu de temps. le truc est qu'il faut un minimum de connaissance quand même pour programmer, ne serait ce que les conditions if dans mon explication, tu avais ta réponse via ta question où tu avais le schéma. dfgh a bien compris le truc en remplacant simplement quelques trucs pour faire le code, 2mn grand max.

maintenant, si tu viens poser une question dans la partie francais, ne la pose pas dans la partie english, ce sont des choses qui ne font pas forcément plaisir quand on aide ;)

Je ne suis pas froissé et je peux comprendre ton point de vue. OK, je ne poserai plus de question en double..mais ça ne voulait pas dire que je n'avais pas confiance !!! A bientôt donc..quand j'aurai d'autres questions!!! En fait ce n'est pas une cuve que je veux remplir mais la gamelle de mes chiens !!! C'est une partie d'un système que j'ai fait qui me permet de pouvoir partir un week-end en laissant mes chiens tout seul...distribution de croquettes, d'eau, allumage de la lumière et ouverture/fermeture de ma porte de garage le tout commandé par internet...voilà tu sais tout !! ;)

cool

phil77560: ... non ce n'est pas pour un exam.... Je n'ai pas de connaissances en programmation, je ne suis qu’électronicien, ... Bonne soirée et merci encore à tous

Ne te denigre pas 8) Puisque tu assume être électronicien , la notion d'hysteresis ne peut donc pas t'etre inconnue ! Tu decouvre simplement là la diff entre un hysteresis hard et un hysteresis soft :grin:

Et je suis en phase avec la reaction d'IB : expliquer et ne pas faire ;) La deferlante des futurs eventuels bacheliers (et autres...) va commencer maintenant , jusque là cette année nous n'avons encore eu à faire qu'avec les "moins mauvais" 8) Mais comme tu l'a indiqué/confirmé , ce n'est pas ton cas