Crée une boucle infinie qui a un nom

Bonjour ou bonsoir, mon probleme est le suivant. Je suis entrain de fabriquer et coder un appareil permettant de controllez plusieurs parametres physique d’un appareil photo ( par exemple le declancheur, le bouton zoom ou encore faire des timelapses ) . Pour l’instant le code n’est pas encore finit ( vraiment vraiment pas du tout ); mais mon vrai probleme est que vous le verrez dans le code, j’essaye de faire des menus qui doivent aparaitre son un ecran 16x2 LCD donc pour cela je fait des appelles de fonctions mais le probleme est que ces fonction ne se repete qu’ une seul fois alors que moi, ce que je veux, c’est que cette fonctoin se repete a l’infinie comme un void loop tant qu’une action ne c’est pas passée ( dans ce cas l’action est la pression d’un bouton). Donc peut on crée plusieurs fonction loop et peut nommé ces fonction ?

 #include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

int plus;
int moins;
int OK;
int image;
int menuPrinc;

void setup() {
  pinMode(7, INPUT);
  pinMode(8, INPUT);
  pinMode(10, INPUT);
  lcd.begin(16,2);
  lcd.print("   Timelapser");
  lcd.setCursor(0,1);
  lcd.print("      V1.0");
  delay(2000);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("   Demarrage");
  lcd.setCursor(0,1);
  lcd.print("   En cours");
  delay(300);
  lcd.print(".");
  delay(300);
  lcd.print(".");
  delay(300);
  lcd.print(".");
  delay(300);
  lcd.clear();
  lcd.print("   Demarrage");
  lcd.setCursor(0,1);
  lcd.print("   En cours");
  delay(300);
  lcd.print(".");
  delay(300);
  lcd.print(".");
  delay(300);
  lcd.print(".");
  delay(300);
  lcd.clear();
  lcd.print(" Appuyer sur +");
  lcd.setCursor(0,1);
  lcd.print(" Pour Continuer");
}



void loop() {

  plus = digitalRead(7);
 moins = digitalRead(8);
 OK = digitalRead(10);

if (plus == HIGH) {
   menuPrinc = menuPrinc + 1;
}
else {
   menuPrinc = menuPrinc;
}
if (moins == HIGH) {
   menuPrinc = menuPrinc - 1;
}
if (menuPrinc == 4) {
   menuPrinc = 0;
}
else {
   menuPrinc = menuPrinc;
}
if (menuPrinc == 1) {
  lcd.clear();
  TimelapsePrinc();
}
else if (menuPrinc == 2){
  lcd.clear();
  ZoomPrinc();
}
else if (menuPrinc == 3) {
  lcd.clear();
  PhotoDistancePrinc();
}
else if (menuPrinc < 1) {
  menuPrinc = 0;
}
}
  


void TimelapsePrinc () {
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("#1 Timelapse");
  lcd.setCursor(0,1);
  lcd.print("Acceder = OK");

  if (OK == HIGH) {
    lcd.clear();
    TimelapseDebut();
  }  
  delay(1000);
}

slt mémorise le menu que tu sélectionne par ex avec un boolean: MTimelapseDebut=!MTimelapseDebut; quand tu fait Ok tu inverse l'état de la mémoire et dans le loop() tu appelle la fonction si tu à MTimelapseDebut
ex : if (MTimelapseDebut) TimelapseDebut();

c'est une solution

Merci à toi ><.
La seul question que je me pose est pourquoi met tu un M avant le nom de la variable ( qui est ici TimelapseDebut ) ?

tu crée une variable boulean MTimelapseDebut tu la nomme comme tu veux c'est juste pour se souvenir si tu à sélectionné cette fonction dans ton menu, si cette variable est à 1 tu appelle la fonction si non non

edit: TimelapseDebut c'est déjà le nom de la fonction du coup le nom de la variable qui va te dire si tu doit l'exécuter doit porter un autre nom, d'ou le M devant