Stap 3: Software - menusysteem
Het echte werk was het systeem van de instelling. Ik wilde zitten kundig voor elke waarde per teken. Sommige van de nummers, zoals lengte- en breedtegraad 5-6 cijfers (het negeren van het decimaalteken) zijn - ik wilde niet te gebruiken een pers en change, methode, zelfs met een toename van de sprong op knop houden. Spreken van knoppen, dit project maakt gebruik van Button.h, die ik in eerste instantie gedacht had behandeld debouncing maar eigenlijk niet. Een betere keuze zou zijn Bounce.h. Het was genoeg om te gooien in een kleine vertraging in de knop polling lussen, aangezien de CPU zelf is niet iets anders te doen - de RTC tijd op zijn eigen houdt.
Dus hoe dan ook, is het eerste probleem van een teken instelling-systeem te weten waar de cursor is toegestaan om te gaan, dit wordt afgehandeld door een twee-dimensie array die slaat een 1 of een 0 voor elke positie op de VFD om aan te geven als de cursor er of niet is toegestaan. Zo niet, de cursor springt naar de volgende beschikbare plek of blijft op de laatste plek. Ik maakte liberale gebruik van gedefinieerde constanten zodat ik niet hoef te onthouden welke indexwaarde met met instelling matrix gaat.
Het tweede probleem van een teken instelling-systeem is het verwerken van gegevensvalidatie. Je zou denken dat het is zo simpel als opnieuw monteren van uw cijfers terug in de waarde en vervolgens doen een vergelijking tegen de max waarde, maar als u wilt blokkeren van de gebruiker uit te gaan naar de volgende waarde die u hebt om te zien wat die waarde + 1 om het getal als een geheel doen zou. Dat is niet slecht voor een paar cijfers, maar het is een puinhoop voor 5-6. Ik vond het gemakkelijker om een tweedimensionale matrix als de matrix positie om de max toelaatbare waarde per teken te houden. Dit kunt u controleren op basis van de index telkens als de gebruiker probeert te verhogen, en in combinatie met een cheque voor de max waarde als een geheel, dit de schendingen van de grenzen van de meeste vangt hetzelfde. Het zal nog steeds mogelijk voor de gebruiker soms het instellen van een ongeldige waarde. Het was ofwel dat, of veel meer code.
Langs dezelfde lijnen schelen kan me niet als de gebruiker heeft geprobeerd in te stellen op zoiets als 30 februari. U kunt toevoegen die soorten grenzen controleren als u wilt. Ik zal toegeven dat ik heb "project vermoeidheid" en dat soort dingen uit links.