Étape 9: Firmware - partie 2: création de couleur
Le code source complet est disponible dans ce dépôt GitHub.
Comme previosly mentionné, une minuterie de 8 bits est utilisée pour contrôler toutes les couleurs de LED. Chaque tir du comparer match ISR A signale un événement de calendrier. Une résolution de 4 implique des valeurs réelles de 0, 1, 2 et 3. Une variable est utilisée pour compter ce temps de déclenchement ISR il est actuellement, et une instruction switch-case sert à faire quelques choses différentes à des moments différents. Lorsque le compteur est égal à la résolution max et rien ne se passe parce que tous les voyants doivent rester si ils sont déjà à, ou rester hors si ils sont déjà éteintes. À 0, il est temps de passer le contrôle à l’autre de 8 colonnes. Tous les voyants sont ensuite configurés pour être sur, mais pas réellement en marche. Le code continue ensuite à la casse par défaut qui gère toutes les autres fois.
Dans ce dernier cas, une boucle parcourt chaque LED RVB dans la colonne activé pour les deux matrices. Si le compteur actuel est égal au temps off pour le R, G ou B LEDs de la couleur désirée, si le LED est défini pour être éteint. Enfin, les données sont déplacées dehors aux constantes pilotes actuels pour mettre effectivement les LED allumé ou éteint. Ce déplacement est une version de bit-bang de protocole SPI réel, avec chaque puce de conducteur de LED ayant une ligne de données distinctes, donc ils peuvent tous être chargés en même temps.
Ensuite, nous allons parler de l’opération par défaut du pilote.