🛠 Apprivoiser la matrice LED 12x8 intégrée
Objectifs
Commander la signature de la carte : une matrice de 96 LED (12 colonnes × 8 lignes) soudée sur la carte, pilotée en multiplexage directement par le RA4M1 — les colonnes sont reliées aux broches 12 à 23 (les broches A0 à A3 sont partagées avec la matrice) et les lignes aux GPIO 24 à 31, non exposés aux connecteurs. Vous allez allumer des colonnes, comprendre le masquage bit à bit, puis afficher une animation.
Matériel
- 1 Arduino UNO R4 WiFi + câble USB-C
- Aucune soudure, aucun composant : tout est embarqué. Les broches 12 à 23 servant aussi d'E/S, évitez de les câbler pendant que la matrice affiche quelque chose.
Code complet
#include "Arduino_LED_Matrix.h"
ArduinoLEDMatrix matrix;
void setup {
matrix.begin;
}
void loop {
// Balayage : une colonne allumée qui se déplace.
for (uint8_t col = 0; col < 12; col++) {
matrix.beginFrame;
for (uint8_t c = 0; c < 12; c++) {
// Chaque setColumn reçoit un octet = masque des 8 lignes,
// bit de poids faible = ligne du bas.
matrix.setColumn(c, c == col ? B11111111 : B00000000);
}
matrix.show;
delay(80);
}
}
La bibliothèque officielle Arduino_LED_Matrix fournit aussi matrix.loadFrame(...) pour des trames codées sur 32 bits, et la classe AnimationEngine avec des modes prêts à l'emploi (SCROLLING, THROBBING, BLINKING). Pour dessiner sans coder, l'éditeur en ligne Arduino Labs (labs.arduino.cc, outil LED Matrix) génère les tableaux de trames à coller dans le croquis.
Vérification attendue
Une barre verticale balaie la matrice de gauche à droite en boucle. Testez B10000001 au lieu de B11111111 : seuls le premier et le dernier bit s'allument, ce qui confirme la lecture bit à bit (LSB = ligne du bas).
Erreurs fréquentes
- Oublier
matrix.begindans setup : la matrice reste éteinte, sans message d'erreur. - Confondre
setColumn(masque de 8 bits, une colonne) avec une coordonnée x,y : il n'y a pas desetPixeldans l'API bas niveau. - Modifier les broches 12 à 23 (dont A0 à A3) pendant l'affichage : la matrice clignote ou affiche n'importe quoi, car le multiplexage lit ces broches en permanence.
- Chercher la matrice sur un bus I²C : elle est câblée en GPIO direct, contrairement aux modules matriciels classiques type MAX7219.
- Écrire dans loop un balayage sans
beginFrame/show: sans ces appels, aucune image complète n'est transférée.
Autres tutoriels pour cette carte
- Premier Blink sur la UNO R4 WiFi : la première UNO 32 bits
- Toucher capacitif : touchRead sans composant
- Se connecter au WiFi et lire l'heure NTP (WiFiS3)
- Inclinomètre sur la matrice : l'IMU LSM6DSV16X en I²C
- Serveur web embarqué : piloter la matrice depuis le navigateur
- Horloge persistante : RTC à pile + resynchronisation NTP
Exemples de code pour cette carte
clignotante.inoArduinobouton-poussoir.inoArduinodac-analogique.inoArduinoentree-analogique.inoArduinopwm-respiration.inoArduinoservo-balayage.inoArduino