Hola,
Hay varias formas de enfocar el tema de menus, las que se me ocurren:
- La que casi todos empezamos, un switch grande. Tienes una variable que indica el menu en el que estas, cada vez que bajas a un submenu le sumas 10, 100, 1000 etc. Por ejemplo, tienes que la capa superior son 6 menus, entonces cuando vas dando a +/- para ir cambiando menu, pues sumas/restas +1. Si le das a aceptar, intro o como quieras llamar a la tecla que te baja al siguiente submenu, le sumas +10 . Si quieres bajar un nivel mas, +1000..... No se si me he explicado bien.
Es decir, si estoy en el Menu principal 5, y le doy INTRO, le sumo +10. Entonces mi variable menu ahora vale 50.
leo_entradas()
si tecla_up -> menu+1
si tecla_down -> menu -1
si tecla_acc -> si menu <10 entonces menu +10
si tecla_esc -> si menu>10 entonces menu-10
funcion_mirar_menu_dentro_limites();
switch (menu)
case 1:
bla,bla,bla
break;
case 2:
bla,bla,bla
break;
....
case 50:
bla,bla
break;
Es una manera facil de entender, pero termina siendo un lio de codigo si tu menu es grande.
-
Maquina de estados. Tipo a lo que te ha puesto josemanu (con un switch, con if, etc). Yo hice una libreria precisamente para el manejo de menus=> SECUduino/FSM Library at master · IgorReal/SECUduino · GitHub
Puedes encontrar un pdf donde explica como usarla. El post original es http://arduino.cc/forum/index.php/topic,75826.0.html
La ventaja, es que es muy facil cambiar menus, anyadir/borrar, etc.
Personalmente, es la que mas me gusta. -
Puntero a funciones. Vas recorriendo arrays que contienen un puntero a la funcion a ejecutar. Para esta necesitas tener cierto nivel de C.
Saludos ![]()
Igor R.
Nota- ni acentos ni enyes