Libreria de menus

Para estar empezando te has metido en un proyecto algo complejo, espero que no te desanimes.

Yo tengo que hacer uno para un aparato y aun no me he metido de lleno en ello, pero documentándome encontré un ejemplo muy esclarecedor ¡OJO! NO ES CODIGO es una especie de algoritmo escrito en inglés.

enum States
{
State_MainMenu,
State_SubMenu1,
State_SubMenu2
};

int state = State_MainMenu;

void loop()
{
switch (state)
{
case State_MainMenu:
Mainmenu();
break;

case State_SubMenu1:
submenu1();
break;

case State_SubMenu2:
submenu2();
break;
}
}

void Mainmenu()
{
read input
if (user selected option 1?)
state = State_SubMenu1;
else if (user selected option 2)
state = State_SubMenu2;

draw main menu
}

void submenu1()
{
read input
if (user selected back option?)
state = State_MainMenu;
else if (something else?)
state = some other state;

draw submenu1
}

etc.

Como verás es prácticamente definir unos estados que cambiarán según unas lecturas, dentro del loop() una estructura switch se encarga de que el menú haga una cosa u otra.