Vuelvo con el problema del menu --- Lib MENUBACKEND

Despues de probar varias libreria la que mas convencio fue esta, pero la puedo hacer funcionar parcialmente :0 :0 :0

Resulta que hise un ejemplo de encender dos led al elegir esa opcion en el menu y cuando la elijo (opcion Chequeo total) no me hace el void de chequeo sino que me vuelve al inicio del menu... :~ :~

Otra duda que tengo es que este menu va en un skecht el cual despliega informacion constante en el lcd y cuando apreto el boton enter ingresa al menu pero al apretar el exit vuelve al inicio del menu que eso me sirve mientras estoy navegando (aunque lo ideal seria que mientras estoy navegando no me haga un menu.toRoot(); , sino que solo me vuelva un paso atras) en el menu, pero me gustaria saber como se puede hace un "case" de que al MANTENER apretado el boton exit , salga totalmente del menu y vuelva al loop del programa y solo al apretarlo me vuelva al incio del menu o me vuelva un paso atras

Aca el codigo:

#include <MenuBackend.h>    
#include <LiquidCrystal.h>  

const int buttonPinLeft = 46;      
const int buttonPinRight = 44;   
const int buttonPinEsc = 42;    
const int buttonPinEnter = 40;  

int lastButtonPushed = 0;

int lastButtonEnterState = LOW;   
int lastButtonEscState = LOW;   
int lastButtonLeftState = LOW; 
int lastButtonRightState = LOW;  


long lastEnterDebounceTime = 0;  
long lastEscDebounceTime = 0;  
long lastLeftDebounceTime = 0; 
long lastRightDebounceTime = 0;  
long debounceDelay = 250;  


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

MenuBackend menu = MenuBackend(menuUsed,menuChanged);

    MenuItem menu1Item1 = MenuItem("Item1");
      MenuItem menuItem1SubItem1 = MenuItem("Item1SubItem1");
      MenuItem menuItem1SubItem2 = MenuItem("Item1SubItem2");
    MenuItem menu1Item2 = MenuItem("Item2");
      MenuItem menuItem2SubItem1 = MenuItem("Item2SubItem1");
      MenuItem menuItem2SubItem2 = MenuItem("Item2SubItem2");
      MenuItem menuItem3SubItem3 = MenuItem("Item2SubItem3");
    MenuItem menu1Item3 = MenuItem("Item3");


void setup()
{
  pinMode(10, OUTPUT); 
  pinMode(9,OUTPUT);
  pinMode(buttonPinLeft, INPUT);
  pinMode(buttonPinRight, INPUT);
  pinMode(buttonPinEnter, INPUT);
  pinMode(buttonPinEsc, INPUT);
  
  lcd.begin(20, 4);


  menu.getRoot().add(menu1Item1);
  menu1Item1.addRight(menu1Item2).addRight(menu1Item3);
  menu1Item1.add(menuItem1SubItem1).addRight(menuItem1SubItem2);
  menu1Item2.add(menuItem2SubItem1).addRight(menuItem2SubItem2).addRight(menuItem3SubItem3);

} 


void loop()
{

  readButtons();  
  navigateMenus();  
                  
} //loop()... 


void menuChanged(MenuChangeEvent changed){
  
  MenuItem newMenuItem=changed.to; 
  
  lcd.setCursor(0,1); 
  
  if(newMenuItem.getName()==menu.getRoot()){ 
            lcd.clear();
    lcd.setCursor(0,0);
lcd.print("MENU       ");
  }else if(newMenuItem.getName()=="Item1"){
            lcd.clear();
    lcd.setCursor(0,0);
lcd.print("1-Ajustes           ");
  }else if(newMenuItem.getName()=="Item1SubItem1"){
            lcd.clear();
    lcd.setCursor(0,0);
lcd.print("Hora");
  }else if(newMenuItem.getName()=="Item1SubItem2"){
            lcd.clear();
    lcd.setCursor(0,0);
lcd.print("Fecha   ");
  }else if(newMenuItem.getName()=="Item2"){
        lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("2-Chequeos           ");
  }else if(newMenuItem.getName()=="Item2SubItem1"){
            lcd.clear();
            lcd.setCursor(0,0);
    lcd.print("2-Chequeos           ");
    lcd.setCursor(0,1);
lcd.print("Sirenas   ");
  }else if(newMenuItem.getName()=="Item2SubItem2"){
            lcd.clear();
            lcd.setCursor(0,0);
    lcd.print("2-Chequeos           ");
    lcd.setCursor(0,1);
lcd.print("Zonas   ");
  }else if(newMenuItem.getName()=="Item2SubItem3"){
            lcd.clear();
            lcd.setCursor(0,0);
    lcd.print("2-Chequeos           ");
    lcd.setCursor(0,1);
lcd.print("Total   ");
confirma();

  }else if(newMenuItem.getName()=="Item3"){
            lcd.clear();
    lcd.setCursor(0,0);
lcd.print("3-Luces           ");
  }else if(newMenuItem.getName()=="Item3SubItem1"){
            lcd.clear();
    lcd.setCursor(0,0);
lcd.print("Interiores           ");
      }else if(newMenuItem.getName()=="Item3SubItem2"){
        lcd.clear();
        lcd.setCursor(0,0);
lcd.print("Exteriores           ");
  }
}

void menuUsed(MenuUseEvent used){
 lcd.clear();
  lcd.setCursor(0,0);  
  lcd.print("Ajuste Exitoso en       ");
  lcd.setCursor(0,1); 


  menu.toRoot(); 
}


void  readButtons(){  
  int reading;
  int buttonEnterState=LOW;            
  int buttonEscState=LOW;         
  int buttonLeftState=LOW;            
  int buttonRightState=LOW;           


         //Ent Boton     
               
                  reading = digitalRead(buttonPinEnter);

                 
                  if (reading != lastButtonEnterState) {
                    
                    lastEnterDebounceTime = millis();
                  } 
                  
                  if ((millis() - lastEnterDebounceTime) > debounceDelay) {
                    
                    buttonEnterState=reading;
                    lastEnterDebounceTime=millis();
                  }
                  
               
                  lastButtonEnterState = reading;
                  

    //Esc Boton     

                  reading = digitalRead(buttonPinEsc);

                  if (reading != lastButtonEscState) {
                    
                    lastEscDebounceTime = millis();
                  } 
                  
                  if ((millis() - lastEscDebounceTime) > debounceDelay) {
                    
                    buttonEscState = reading;
                    lastEscDebounceTime=millis();
                  }
                  
                  
                  lastButtonEscState = reading; 
                  
                     
   //Abajp buton               
                  
                  reading = digitalRead(buttonPinRight);

                  if (reading != lastButtonRightState) {
                    
                    lastRightDebounceTime = millis();
                  } 
                  
                  if ((millis() - lastRightDebounceTime) > debounceDelay) {
                  
                    buttonRightState = reading;
                   lastRightDebounceTime =millis();
                  }
                  
                  
                  lastButtonRightState = reading;                  
                  
                  
    //Arriba buton               
                  
                  reading = digitalRead(buttonPinLeft);

                 
                  if (reading != lastButtonLeftState) {
                    
                    lastLeftDebounceTime = millis();
                  } 
                  
                  if ((millis() - lastLeftDebounceTime) > debounceDelay) {
                    
                    buttonLeftState = reading;
                    lastLeftDebounceTime=millis();;
                  }
                  
               
                  lastButtonLeftState = reading;  

                  
                  if (buttonEnterState==HIGH){
                    lastButtonPushed=buttonPinEnter;

                  }else if(buttonEscState==HIGH){
                    lastButtonPushed=buttonPinEsc;

                  }else if(buttonRightState==HIGH){
                    lastButtonPushed=buttonPinRight;

                  }else if(buttonLeftState==HIGH){
                    lastButtonPushed=buttonPinLeft;

                  }else{
                    lastButtonPushed=0;
                  }                  
}

void navigateMenus() {
  MenuItem currentMenu=menu.getCurrent();
  
  switch (lastButtonPushed){
    case buttonPinEnter:
      if(!(currentMenu.moveDown())){  
        menu.use();
      }else{  
        menu.moveDown();
       } 
      break;
    case buttonPinEsc:
      menu.toRoot();  
      break;
    case buttonPinRight:
      menu.moveRight();
      break;      
    case buttonPinLeft:
      menu.moveLeft();
      break;      
  }
  
  lastButtonPushed=0; 
}

void confirma()
{
    lcd.setCursor(0,2);
  lcd.print("Ent:Comfirmar");
  lcd.setCursor(0,3);
  lcd.print("Esc:Cancelar");
  
  switch (lastButtonPushed){
    case buttonPinEnter:
        chequeo();
      break;
      
    case buttonPinEsc:
      menu.toRoot();  
      break;
  
}
}

void chequeo()
{
  delay(500);
  digitalWrite(9,HIGH);
  delay(500);
  digitalWrite(10,HIGH);
}

Desde ya muchas gracias :grin: