¿Existe un patrón para un sistema de menú simple en C para una pantalla LCD de texto? Me encuentro reescribiendo mucho código para manejar menús simples de texto en LCD.
Creo que la mayoría de los sistemas tienen un menú principal y algunos submenús que, cuando se seleccionan, le permiten establecer un parámetro con un valor mínimo y máximo.
Idealmente, este sistema de menús se puede navegar con 4 teclas simples como ingresar, cancelar, arriba y abajo.
En mi aplicación, estoy usando una pantalla LCD de texto de 2 líneas x 16 caracteres, aunque una solución ideal debería poder aplicarse a cualquier pantalla NxM.

Respuestas:
El patrón que uso para los sistemas de menús en C es algo como esto:
Luego declaro una matriz de
menus que contienemenuitemsy punteros achildsubmenús. Arriba y abajo se mueve a través de la matriz demenuitems seleccionada actualmente . Atrás se mueve alparentmenú y avanza / selecciona se mueve a unchildsubmenú o llamahandlerFunca un nodo hoja.Renderizar un menú solo implica iterar a través de sus elementos.
La ventaja de este esquema es que está totalmente basado en datos, las estructuras de menú pueden declararse estáticamente en ROM independientemente de las funciones de renderizador y controlador.
fuente
La respuesta de Toby es un muy buen punto de partida. Las estructuras mencionadas suponen que los menús son estáticos y simplemente navega por ellos.
Si desea menús dinámicos (por ejemplo, mostrar ciertos valores, como temperatura, tiempo, etc.), debe poder generarlos.
Una forma podría ser registrar una función para construir su cadena.
fuente