Étape 3: programmation
Le premier défi de ce projet était de trouver le moyen de mettre toutes les informations sur un seul écran 8 x 8 et aussi gérer toutes les LEDs d’obtenir les résultats de clignement, activer ou désactiver sur la bonne position.
Tout d’abord, j’ai fait un modèle sur une feuille de calcul Excel simulant cette opération avec un programme Visual Basic.
Après cela, je me suis déplacé à la logique liée à l’Arduino, réflexion sur les bibliothèques qui m’aiderait, principalement liés aux minuteries qui prennent en charge la pagination entre l’affichage du calendrier et l’affichage de l’horloge numérique et également liés à la minuterie à lire l’encodeur.
Mon option pour utiliser le codeur est en raison de sa précision. J’ai essayé d’utiliser les potentiomètres, mais le résultat n’est pas satisfaisant, parce que le signal analogique n’est pas constant provoquant des variations dans le calcul des résultats à afficher dans l’affichage.
Pour la minuterie, j’ai décidé d’appliquer la bibliothèque TimerOne pour lire l’encodeur chaque 1 milisecondes et les résultats étaient vraiment très bons.
Pour gérer la fonctionnalité de pagination, j’ai utilisé les fonctions while() et millis() pour contrôler la boucle du calendrier pendant 30 secondes et puis l’affichage est nettoyée pour présenter l’horloge numérique.
Ce sont les bibliothèques que vous avez besoin du mettre dans votre IDE Arduino :
- Time.h - bibliothèque avec des fonctions de date et d’heure
- LedControl.h - bibliothèque pour contrôler la matrice de LED
- Wire.h - bibliothèque pour supporter la DS130RTC
- DS130RTC, h - bibliothèque de l’horloge en temps réel
- Bounce2.h - bibliothèque pour lire le bouton du codeur
- TimerOne.h - bibliothèque de la minuterie 1 à lire l’encodeur.
Lié au calcul des Phases lunaires, mon option était d’appliquer un algorithme qui serait assez bon mais sans la précision scientifique d’une méthode de calcul vaste.