Stap 4: Code schrijven om te rijden van de klok
De klok-code kan worden gesplitst in twee delen; de code die de klok op een bepaald moment zal vooraf, en de code die de huidige tijd krijgt vormen het internet.De klok voorschot code heeft een paar aandachtspunten:
- Moet de tijd verder in 30 tweede intervallen.
- Als de weergegeven tijd is achter, het voorschot moet sneller worden uitgevoerd totdat het is ingehaald.
- Als de weergegeven tijd is ver achter, en het is sneller om gewoon wachten tot de tijd te halen in plaats van proberen om de weergave van de klok ingehaald, moet dan de klok gewoon wachten.
- De wiskunde klok heeft om te kunnen omgaan met middag/middernacht, waar de tijd effectief terugloopt op nul.
- De klok moet bijhouden van de laatste positie van de handen, zodat dit niet hoeft te worden gereset als de stroomonderbreking.
- Er moet een mechanisme om in eerste instantie bepalen de positie van de handen, zodat het programma hen dienovereenkomstig bewegen kan.
De hoofdlus van de toepassing houdt controle als de huidige tijd meer dan 30 seconden voorsprong op de weergegeven tijd is. Als het is, dan een voorschot beweging wordt gestart en de nieuwe weergegeven tijd is opgenomen in de de Arduino EEPROM. Een voorschot wordt ingesteld op de spoel station pin hoog. Een tweede stukje code aangeroepen vanuit de hoofdlus wordt gecontroleerd als de spoel pulse lengte periode is bereikt, en zo ja de pin laag opnieuw instellen. De code zal niet proberen en een andere pols uitvoeren voor een bepaalde periode van tijd. Ik eindigde met een spoel op tijd van 150ms, en een minimum van tijd van 850ms, maar dit moet mogelijk worden aangepast op basis van de klok van uw computer in het verkeer.
De code die slaat op de tijd in de EEPROM gebruikt een paar trucjes om zo veel leven uit de Arduino te krijgen de EEPROM mogelijk. Elke bit van de EEPROM heeft een beperkt aantal schrijven cycli voordat het zal mislukken. Om te strekken dit uit, gebruikte ik een beetje voor elke 30-seconde interval dat (een totaal van 1440 mogelijke standen) op de klok kon worden weergegeven. Het 180 bytes voor EEPROM gebruikt voor het opslaan van dit. Om middernacht en 's middags, wordt de array gewist alle nullen. Dan na de eerste 30 seconden is interval de eerste bit ingesteld. Op 1 minuut, is een seconde bit ingesteld, enzovoort tot jus voordat middernacht of middag alle bits in de matrix zijn ingesteld. Daarom is elke bit geschreven alleen 4 keer per dag. Dat geeft een levensduur meer dan 15 jaar (waarschijnlijk veel langer).
Wanneer de klok powered-up is, wordt de laatste keer dat weergegeven gelezen terug de EEPROM.
Aanpassing van de actuele tijd wordt gedaan via een eenvoudige web-pagina die de klok dient. Dit was ook nuttig tijdens de foutopsporing.