Hola a todos!
He realizado unos cuantos menus con pantallas de 2x16, y creo que la mejor forma de hacerlo es la siguiente:
En la primer linea del LCD mostras un titulo del menu, o algun texto, por ejemplo: "Elija una opcion", y en la segunda linea, mostras la opcion. Con 2 teclas incrementas o decrementas un contador, y en funcion de ese contador mostras una opcion en la segunda linea del lcd.
Con otra tecla entras a la opcion, una vez dentro de la opcion (si tenes que mostrar mas opciones) haces lo mismo. Osea, en la primer linea mostras el nombre de la opcion a la que entraste, y en la segunda linea mostras las opciones disponibles en funcion de un contador.
Un menu de asi lo podes implementar asi:
Funcion mostrar_menu:
Escribo algo en la primer linea.
Pongo un contador a 0.
loop:
si tecla es +, incrementar contador
si tecla es - , decrementar contador
si tecla es enter {
si contador es 0, ejecutar la opcion 1
si contador es 1, ejecutar la opcion 2
si contador es 2, ejecutar la opcion 3
si contador es 3, ejecutar la opcion 4
si contador es 4, ejecutar la opcion 5
}
(de esta forma, cuando llegues a la ultima opcion, te quedaras en esa)
si contador es menor a 0, contador = a 0
si contador es mayor a numero de opciones, contador = a numero de opciones
(de esta forma, cuando llegues a la ultima opcion, iras a la primera) ( elije una sola)
si contador es menor a 0, contador = a numero de opciones
si contador es mayor a numero de opciones, contador = a 0
si contador es 0, mostrar en la linea 2 la opcion 1
si contador es 1, mostrar en la linea 2 la opcion 2
si contador es 2, mostrar en la linea 2 la opcion 3
si contador es 3, mostrar en la linea 2 la opcion 4
si contador es 4, mostrar en la linea 2 la opcion 5
....
esperar un tiempo cortito(unos 20 o 30 ms)
goto loop.
Espero haberte ayudado, cualquier cosa que no entiendas avisa.
Saludos