Libreria de menus

Hola,

Hay varias formas de enfocar el tema de menus, las que se me ocurren:

  1. 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.

  1. 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.

  2. Puntero a funciones. Vas recorriendo arrays que contienen un puntero a la funcion a ejecutar. Para esta necesitas tener cierto nivel de C.

Saludos :wink:

Igor R.

Nota- ni acentos ni enyes