Stap 3: programmeren
De eerste uitdaging van dit project was om uit te vinden de manier om alle informatie op één beeldscherm 8 x 8 en ook het beheer van alle de LED's om de resultaten van knipperen, inschakelen of uitschakelen op de juiste positie.
Eerst en vooral, heb ik een model in een Excel-werkblad simuleren van deze operatie met een Visual Basic-programma.
Na dat bewoog ik me aan de logica aan de Arduino, denken over de bibliotheken die zou helpmenu, voornamelijk verband houden met timers die ondersteuning bieden voor het wisselbestand tussen de agenda-weergave en de weergave van de digitale klok en ook gerelateerd aan de timer om te lezen het coderingsprogramma gerelateerde.
Mijn optie om de encoder te gebruiken is als gevolg van de juistheid ervan. Mij beproefd voor toepassing potentiometers, maar het resultaat was niet bevredigend omdat het analoge signaal is niet constant variatie veroorzaken in de berekening van de resultaten in de weergave moet worden weergegeven.
Voor de timer, heb ik besloten om het toepassen van de TimerOne bibliotheek om te lezen het coderingsprogramma elke 1 milisecond en de resultaten waren echt heel goed.
Voor het beheren van de paging-functie, ik gebruikte de functies while() en millis() om te controleren de lus van kalender gedurende 30 seconden en vervolgens de weergave wordt schoongemaakt om de digitale klok.
Dit zijn de bibliotheken dat u nodig hebt gezet in de Arduino IDE:
- Time.h - bibliotheek met datum- en tijdfuncties
- LedControl.h - bibliotheek waarmee de LED Matrix
- Wire.h - bibliotheek ter ondersteuning van de DS130RTC
- DS130RTC, h - bibliotheek van Real Time klok
- Bounce2.h - bibliotheek om te lezen van de knop van encoder
- TimerOne.h - bibliotheek van de Timer 1 te lezen van het coderingsprogramma.
In verband met de berekening van de maanfasen, was mijn optie om toe te passen van een algoritme dat zou goed genoeg, maar zonder de wetenschappelijke precisie voor een uitgebreide berekeningsmethode.