Étape 3: Logiciel - système de Menu
Le véritable travail a été la configuration du système. Je voulais être en mesure de définir chaque valeur caractère par caractère. Certains des chiffres, comme la longitude et la latitude sont 5 à 6 chiffres (sans tenir compte de la virgule) - je ne voulais pas utiliser une presse et maintenez de la méthode change, même avec un incrément de saut sur le bouton. En parlant de boutons, ce projet utilise des Button.h, qui je pensais initialement traitée anti-rebond GPIO mais ne fait pas. Un meilleur choix serait Bounce.h. Il suffisait de jeter un petit retard dans les boucles du scrutin bouton, puisque le CPU lui-même n’est pas faire autre chose - le CCF garde temps ses propres.
De toute façon, le premier problème d’un système de fixation par caractère est de savoir où le curseur est autorisé à passer, cela est géré par un ensemble de deux-dimension qui stocke un 1 ou 0 pour chaque poste sur le mécanisme d’entraînement pour indiquer si le curseur est autorisé là ou non. Sinon, le curseur passe à la prochaine place disponible ou des séjours à la dernière place. J’ai fait l’utilisation libérale de constantes définies donc je ne dois pas mémoriser quelle valeur de l’index va avec tableau de réglage.
Le deuxième problème d’un système de fixation par caractère gère la validation des données. On pourrait penser c’est aussi simple que de ré-assemblage de vos chiffres dans la valeur et puis en faisant une comparaison avec la valeur max, mais pour empêcher l’utilisateur de se rendre à la prochaine valeur il faut voir ce que cette valeur + 1 ferait au nombre dans son ensemble. Ce n’est pas mauvais pour un couple de chiffres, mais c’est un gâchis pour 5-6. J’ai trouvé que c’était plus facile d’avoir un tableau à deux dimensions comme le tableau de position pour contenir la valeur maximum autorisée par caractère. Cela vous permet de vérifier la même chose selon index chaque fois que l’utilisateur essaie d’incrémenter, et couplé avec un chèque de la valeur max dans son ensemble, cela capte la plupart des violations de limites. Il sera toujours possible pour l’utilisateur de mettre parfois une valeur illégale. C’était ça ou beaucoup plus de code.
Dans le même sens, je n’aimais pas si l’utilisateur a essayé de mettre quelque chose comme 30 février. Vous pouvez ajouter cela trie de vérification si vous voulez de limites. J’avoue que je me suis « fatigue du projet » et laissé ce genre de chose dehors.