Étape 10 : Firmware - partie 3: fonctionnement du pilote
Le code source complet est disponible dans ce dépôt GitHub.
Comme je disais avant, ce pilote de matrice est en fait partie d’un projet plus vaste. Ainsi, le circuit est configuré pour agir comme un esclave de bus de TWI (I2C). Le code s’exécute la séquence de chase par défaut (une paire de visages souriants), en attente pour obtenir des instructions supplémentaires provenant du bus de TWI. En ce qui concerne le projet plus vaste, un octet de données unique est envoyé avec chaque bit de l’octet représentant un quandrant de la matrice à activer. Une fois que les données sont reçues, la séquence LOOP_QUADS est activée. Il parcourt simplement toutes les couleurs possibles définies dans modules/macros/color_8bit.h, affichant les couleurs sur quelle que soit quadrants de matrice sont activés. Si aucune donnée n’est reçue après une si longue (environ 10 secondes), les matrices de revenir à la séquence de chase par défaut (une paire de visages souriants).
Toute l’opération de TWI est gérée dans la routine de service Interrrupt TWI. Bien que l’ISR s’attend seulement un octet de données, il sera trivialement facile de modifier ce code pour gérer plusieurs octets de données. Ce faisant permettrait le contrôle externe sur tous les aspects du pilote matrice notamment la définition des différentes couleurs de LED, affichage même inactif ou des séquences de chasse !