renvoyer vers une fonction

Bonjour,

je souhaite faire une fonction , qui , si le résultat est ==false, renvoie vers le debut de la fonction ou vers une autre fonction.
Est-ce possible? Car mon code ne fonctionne pas.
Si je laisse les fonctions dans void loop, il execute toute les fonction même sans appuyer sur le bouton poussoire.
Et si je les enlèves il ne se passe rien du tout.
Je suis débutant, donc si quelqu’un me trouve une solution, une petite explication serait la bien venue.
Je vous joint un petit schéma, c’est peut-être plus claire pour comprendre ce que j’aimerais réaliser.
Merci.

void setup()
{
  pinMode(13,OUTPUT);
  pinMode(10,INPUT);
  
  
  
}

void loop()
{
  testPression1();
  testPression2();
  testPression3();
}
 boolean pressionPompe=digitalRead(10);
 
 void testPression1()
 {
 
 if (digitalRead(pressionPompe == true))
 {
   testPression2();
 }
 else
 {
   testPression1();
 }  
 }
 
 void testPression2()
 {
 
   if (digitalRead(pressionPompe == false))
   {
     delay(2000);
     testPression3();
   }
   else
   {
     testPression1();
   }
 }
   void testPression3(){
   
     if (digitalRead(pressionPompe == true))
     {
       digitalWrite(13,HIGH);
       delay(5000);
     
     }
     else
     {
       digitalWrite(13,LOW);
       testPression1();
     }
}

if (digitalRead(pressionPompe == true)Oops

le “true”?
c’est pour être sur que la pompe a bien demarré.
du coup tant que le bouton n’est pas appuyé, il devrait retourner sur la première fonction, non?

 boolean pressionPompe=digitalRead(10);
 
...
 
 if (digitalRead(pressionPompe == true)

Oops

Si tu reformules ta question, la réponse vient d'elle même : tu veux faire une fonction qui boucle sur elle-même TANT QUE le résultat est faux. Donc ta fonction devient :

void maFonction () {
  boolean monResultat = false;
  while (!monResultat) {

// Ici le contenu de la fonction, qui modifie la valeur de monResultat

  }
}

Si tu veux qu'elle "renvoie vers le début de la fonction ou vers une autre fonction", il faut définir sous quelles conditions elle renvoie vers l'autre fonction. Ça peut être fait de plusieurs manières différentes : renvoyer une valeur booléenne et appeler l'autre fonction depuis la loop en fonction de sa valeur par exemple.

AWOL te faisait remarquer une faute dans ta ligne, qui doit être :
if (digitalRead(10) == true)ou
if (pressionPompe)pressionPompe est le résultat de la lecture de la pin 10, pas le numéro de la pin.

OK merci.
pour la fonction while, j'ai compris.

pour renvoyer vers une autre fonction, pas sur davoir bien saisi :sweat_smile: , mais je vais faire des tests.

Merci

Je voulais dire que ta première fonction peut renvoyer une valeur booléenne, au lieu de rien du tout comme c'est le cas dans ce que je t'ai proposé, et la loop peut appeler la seconde fonction selon la valeur de ce booléen.

C'est bon ca fonctionne. MERCI
Il suffisait de corriger la faute dans le digitalread, le reste du code fonctionne.