Touchscreen - Problem mit den Buttons

Hallo
Habe versucht eine passende Antwort zu meinem Problem zu finden, leider vergebens.
Hoffe ihr könnt mir helfen

ich nutze ein Arduino Mega 2560 mit Touchscreen.
Hier ist der Code

#include <UTFT.h>            
#include <UTouch.h>
#include <UTFT_Buttons.h>
extern uint8_t BigFont[];    
extern uint8_t SmallFont[];

UTFT          myGLCD(ITDB32S,38,39,40,41);
UTouch        myTouch(6,5,4,3,2);
UTFT_Buttons  myButtons(&myGLCD, &myTouch);
unsigned int main_but1, main_but2,main_but3, start_but, stop_but;
int m_press;
int led = 13;
void setup() {  
  myGLCD.InitLCD();
  myGLCD.clrScr();
  myGLCD.setFont(BigFont);   
  myTouch.InitTouch();
  myTouch.setPrecision(PREC_MEDIUM);  
  myButtons.setTextFont(BigFont);
  pinMode(led,OUTPUT);  
}

void loop(){
  const boolean default_colors = true;
start:   
//Button Hauptmenue
  main_but1 = myButtons.addButton (30,60,260,40,"LED SETUP");
  main_but2 = myButtons.addButton (30,110,260,40,"GAME SETUP");
  start_but = myButtons.addButton (30,160,125,40,"Start");
  stop_but = myButtons.addButton (165,160,125,40,"Stop");
  myButtons.drawButtons(); 
  
// Abfrage der geklickten Buttons
  while(1) 
  {
    if (myTouch.dataAvailable() == true)
    {
      m_press = myButtons.checkButtons(); 
     
      if (m_press==main_but1) l_1_screen(1);
      if (m_press==main_but2) l_1_screen(2);
      if (m_press==start_but) do_s_98();
      if (m_press==stop_but) do_s_99();
      goto start;    
     }
  }  
}
// Funktion
void l_1_screen(unsigned int submenu)
{
      myButtons.deleteAllButtons();
      myGLCD.clrScr();
      myButtons.checkButtons();
      unsigned int main_but4,m_press_2; 
      
      switch (submenu)
     {
     case 1:
     main_but1=myButtons.addButton(20,60,50,50,"11");
     main_but2=myButtons.addButton(80,60,50,50,"12");
     main_but3=myButtons.addButton(140,60,50,50,"13");
     break;
     case 2:
     main_but1=myButtons.addButton(20,60,50,50,"21");
     main_but2=myButtons.addButton(80,60,50,50,"22");
     main_but3=myButtons.addButton(140,60,50,50,"23");
     break;       
     }
    // Zurueck-Button setzen um ins Hauptmenu zu kommen
     main_but4 = myButtons.addButton (30,190,260,40,"Return");
     myButtons.drawButtons();
     while(2)
     {
       if (myTouch.dataAvailable() == true)
        {
          myButtons.drawButtons();
          m_press_2 = myButtons.checkButtons();
       // Aufruf der Funktionen zu den Submenubuttons
           switch (submenu)
          {
            case 1:
            if (m_press_2==main_but1) do_s_11();
            if (m_press_2==main_but2) do_s_12();
            if (m_press_2==main_but3) do_s_13();
            break; 
            case 2:
            if (m_press_2==main_but1) do_s_21();
            if (m_press_2==main_but2) do_s_22();
            if (m_press_2==main_but3) do_s_23();
            break;
          }
        if (m_press_2==main_but4) break;
        }
     }  
  myButtons.deleteAllButtons();
  myGLCD.clrScr(); 
  return; 
}

void do_s_11(){digitalWrite(led, HIGH);
}
void do_s_12(){digitalWrite(led, LOW);
}
void do_s_13(){
  do{   
  digitalWrite(led, HIGH);   
  delay(1000);               
  digitalWrite(led, LOW);    
  delay(1000);
} while(2);
}    
void do_s_21(){
}
void do_s_22(){
}
void do_s_23(){
}
void do_s_98(){digitalWrite(led, HIGH);
}
void do_s_99(){digitalWrite(led, LOW);
}

So, nun zum Problem.
das hin und her schalten zwischen dem Hauptmenü und dem beiden unter Menüs “Led Setup” und “Game Setup” funktioniert auch wunderbar.
Die Hinterlegten Funktionen im “Led Setup” auf 11 und 12 klappt auch ohne Probleme. Bei der Funktion die hinter 13 hinterlegt ist sollte ausgewählt werden und so lange laufen bis eine weitere Taste gedrückt wird die das beendet oder wieder 11 oder 12 gewählt werden. Hierzu fehlt mir noch die Idee. Zurzeit startet die Taste 13 die Schleife danach kann ich aber nichts mehr machen.

Ein weiteres Problem ist die Start/Stop Tasten was im Untermenü mit 11/12 wunderbar klappt funktioniert hier leider nicht. Kann die LED zwar anmachen aber danach kann ich wieder keinen Button mehr betätigen.

Hoffe das ich das einigermaßen erklären konnte.

Gruß Kücki

while(2) ist endlos gegeben, da bleibt er stecken!

Dazu Fehlt mir ja leider die passende Idee. Sobald ich die Schleife start würde ich gerne weiter im Menü hin und her springen während die Schleife weiter läuft. Was ja leider nicht geht in der Jetzige variante Abbruchbedingung soll sein wenn ich einen anderen Button aus dem LED-Setup betätige, also eine andere Scene oder einen "off" Button. Hätte du eine Lösung für mich wie ich das am besten gestallten kann