Voltar a tela inicial LCD + Menu

Sem ver o código todo é difícil entender exactamente o que se passa, mas a impressão que me dá é que estás a fazer isto da maneira mais complicada possível.

Por exemplo, a quantidade de "while(1)" que tens no teu código é demais. Tu depois encadeias while(1) dentro de while(1) que inevitavelmente traz problemas com a memória interna do CPU.

Há dias havia aqui alguém a querer fazer algo semelhante e eu indiquei estes links:

https://forum.arduino.cc/index.php?topic=529299.0

https://eeenthusiast.com/arduino-lcd-tutorial-display-menu-system-scrolling-menu-changeable-variables-projects/

Dá uma vista de olhos neles e possivelmente utiliza a biblioteca que eles utilizam para atingir o que queres.

Caso queiras fazer isto por ti, o método que eu sempre achei melhor é ter uma variável por cada nível de menú que guarda o menú a mostrar.

Depois de segundo a segundo chamas uma função que mostra a tela que pretendes mostrar dependendo do valor dessa variável.
Antes de chamares a função que mostra a tela, chamas uma função que lê os botões do teclado e actua sobre as variáveis que referi em cima. Assim não precisas de andar a saltar de função para função com vários while(1).