Paso 3: Software - sistema de menú
El trabajo real es el sistema de ajuste. Quería ser capaz de establecer cada valor carácter por carácter. Algunos de los números, como la longitud y latitud son 5-6 dígitos (ignorando los decimales) - no quiero usar una prensa y método de cambio, incluso con un incremento de salto en el botón hold. Hablando de botones, este proyecto utiliza Button.h, que inicialmente había pensado maneja contra rebotes pero realmente no. Una mejor opción sería Bounce.h. Fue suficiente para lanzar un pequeño retraso en los lazos de la interrogación de botón, ya que la CPU sí mismo no está haciendo otra cosa - el RTC mantiene tiempo su propio.
Tan de todos modos, el primer problema de un sistema de ajuste por carácter es saber donde puede ir, esto es manejado por una matriz de dos dimensiones que almacena un 1 o 0 para cada posición en el VFD para indicar si el cursor está permitido o no el cursor. Si no, el cursor salta hasta el siguiente lugar disponible o se queda en el último lugar. Hice liberal uso de constantes definidas para no tener que memorizar qué valor del índice va con matriz de configuración.
El segundo problema de un sistema de ajuste por carácter encarga de validación de datos. Crees que es tan simple como volver a montar sus dígitos en el valor y luego hacer una comparación con el valor máximo, pero para bloquear al usuario de ir al siguiente valor que hay que ver lo que ese valor + 1 haría el número en su conjunto. Que no está mal para un par de dígitos, pero es un lío para 5-6. Encontré que era más fácil tener un array bidimensional como la matriz de posición para mantener el máximo valor permitido por carácter. Esto le permite comprobar lo mismo basado en el índice cada vez que el usuario intenta incrementar, y junto con un cheque por el valor máximo en su conjunto, captura la mayoría de las violaciones de límites. Todavía será posible para el usuario a veces establecer un valor ilegal. Era eso o mucho más código.
En la misma línea, no me importaba si el usuario intentó establecer algo así como 30 de febrero. Puede agregar que tipo de límites de control si usted quiere. Admito que me "proyecto fatiga" y ese tipo de cosas a la izquierda.