Ce module est un afficheur à LED matriciel de 8 × 32 points, soit 256 LED pilotables une par une. Derrière la vitre noire se cachent quatre blocs 8 × 8, chacun avec son propre circuit MAX7219, les quatre circuits étant déjà chaînés sur la même carte. Vous n’avez donc rien à souder, rien à aligner : cinq fils vers la carte de commande et l’afficheur est prêt.
Le pilotage tient en trois lignes de données — DIN, CS, CLK — qui occupent 256 points. C’est toute la valeur du MAX7219 : il balaie les colonnes, limite le courant dans chaque LED et règle la luminosité à votre place, pendant que votre programme se contente d’écrire le dessin voulu. Les 16 niveaux d’intensité se règlent par logiciel, ce qui permet de passer d’un affichage discret la nuit à un texte lisible en plein jour sans toucher au câblage.
C’est la carte que l’on retrouve partout pour faire défiler un texte : compteur de score, station de mesure, panneau de nouvelle, horloge, bandeau d’information dans un local.
Caractéristiques techniques
| Référence | Module 4 en 1 « FC-16 » à pilotes MAX7219 — quatre blocs 8 × 8 sur une seule carte |
|---|---|
| Résolution | 32 colonnes × 8 lignes, soit 256 LED |
| Pilotes | 4 × MAX7219, un par bloc 8 × 8, reliés en cascade sur la carte |
| Interface | Série SPI, 3 fils plus la masse : DIN, CLK, CS |
| Alimentation | 5 V continu — prévoir une source capable de tenir les appels de courant |
| Consommation | De l’ordre de 80 mA par bloc, environ 320 mA les 256 LED allumées à intensité maximale |
| Luminosité | 16 niveaux, réglés par registre, donc par logiciel |
| Fréquence de balayage | 800 Hz environ par circuit : ni scintillement à l’œil, ni clignotement sur une photo |
| Entrées | Connecteur 5 broches mâle : VCC, GND, DIN, CS, CLK |
| Sorties | Connecteur 5 broches : VCC, GND, DOUT, CS, CLK — pour chaîner un second module |
| Dimensions | Environ 128 × 32 mm, épaisseur 14 mm, quatre trous de fixation au pas M3 |
| Sens de circulation | De gauche à droite, repéré IN et OUT sur la sérigraphie du bas |
Brochage et câblage
Le module se raccorde comme un seul composant, alors qu’il en contient quatre. La correspondance pour un Arduino Uno ou un Nano, qui possèdent un bus SPI matériel :
VCC | → 5V de la carte de commande |
|---|---|
GND | → GND, la masse commune |
DIN | → D11 sur Uno et Nano (MOSI, la sortie de données du bus) |
CS | → D10, mais n’importe quelle sortie numérique libre convient |
CLK | → D13 sur Uno et Nano (SCK, l’horloge du bus) |
Sur un ESP32, le bus VSPI se trouve sur GPIO23 pour DIN et GPIO18 pour CLK ; CS peut être n’importe quel GPIO libre, GPIO5 par exemple. L’alimentation doit toutefois être prise sur la broche 5 V de la carte, jamais sur la sortie 3,3 V : le MAX7219 a besoin de ses 5 V.
Le module ne se branche pas dans le sens inverse. Les flèches et les mentions IN / OUT imprimées sous les blocs indiquent le chemin des données : on entre par la gauche, on sort par la droite. Un module branché à l’envers par rapport à la sérigraphie affiche des dessins aléatoires, sans rien casser.
Ce que la carte fait à votre place
Chaque bloc 8 × 8 possède sa puce. Les quatre puces reçoivent les mêmes trois fils et sont reliées entre elles par la broche DOUT : les données entrent par la première, débordent dans la deuxième, puis dans la troisième et la quatrième. D’un point de vue logiciel, la carte se comporte donc comme un seul afficheur de 32 points de large — vous envoyez un tableau de quatre octets par ligne, et chaque puce prend le sien.
Le balayage, lui, reste interne : à chaque instant seul un rang de huit LED par puce est allumé, et la rotation se fait assez vite pour que l’œil reconstitue l’image complète. C’est ce qui explique les appels de courant, et c’est aussi pourquoi une photo prise au mauvais moment peut montrer un affichage incomplet alors que le montage est en parfait état.
L’alimentation, le vrai point à soigner
Avec 256 LED, la consommation n’est plus un détail. Tous les points allumés à intensité maximale, comptez environ 320 mA, et bien davantage en pointes, chaque puce allumant un rang à la fois. Trois conséquences pratiques :
- Ne pas alimenter la matrice depuis la sortie 5 V d’une petite carte si le montage comporte plusieurs modules. Le régulateur des cartes d’entrée de gamme ne tient pas la charge et la tension s’effondre, ce qui se traduit par des LED faibles et des caractères corrompus.
- Pour un montage fixe, prendre une source 5 V séparée et relier impérativement sa masse à celle de la carte de commande : sans masse commune, les trois lignes de données n’ont aucune référence et l’affichage part en désordre.
- Un condensateur de découplage près du connecteur d’entrée absorbe les pointes de courant. C’est ce qui sépare un montage qui fonctionne sur la table d’un montage stable toute une journée.
Un mot sur la chaleur : une matrice qui affiche peu de points reste froide, mais un texte plein écran à intensité 15 fait travailler les quatre puces. Une intensité moyenne — 4 à 8 — suffit presque toujours et change peu la lisibilité.
Applications
- Texte défilant — messages, noms d’équipe, consignes dans un atelier ou une vitrine.
- Compteur de score — deux nombres, un chronomètre ou un tableau de points pour un jeu maison.
- Station de mesure — température, humidité, tension, avec défilement quand plusieurs valeurs se suivent.
- Horloge de bureau — heures et minutes en grand, synchronisées sur un module d’horloge temps réel.
- Bandeau d’information — textes courts pilotés par Wi-Fi depuis un ESP32.
- Icônes et animations — une image par dessin, le contenu de chaque octet restant libre.
Mini-projet : un texte qui défile sur les 32 colonnes
Nous allons afficher le mot « BONJOUR » sur toute la largeur, en boucle. La bibliothèque s’occupe du décalage d’une colonne à la fois ; le programme se contente de lui donner le texte et la vitesse. Comptez vingt minutes, dont l’installation des bibliothèques.
Ce qu’il faut
| L’afficheur | La matrice 8 × 32 MAX7219 de cette page |
|---|---|
| Le cerveau | Uno R3 + cable usb — ou un Nano, plus compact pour un montage fixe |
| Les liaisons | 10 × fil mâle-mâle 10 cm — ou le lot de câbles Dupont |
| Le support | Une plaque d’essai 830 points si vous préférez poser la carte au propre |
| Pour un montage fixe | Une alimentation 5 V 2 A — la matrice et la carte peuvent la partager |
Le câblage
Cinq fils, dans cet ordre sur le connecteur d’entrée, celui de gauche :
VCC du module | → 5V de l’Arduino |
|---|---|
GND du module | → GND de l’Arduino |
DIN du module | → D11 de l’Arduino |
CS du module | → D10 de l’Arduino |
CLK du module | → D13 de l’Arduino |
Le connecteur de sortie, à droite, reste libre : c’est lui qui servirait à chaîner un second module. Avant de téléverser, vérifiez que DIN est bien sur la broche D11 et non sur D12 — une inversion entre les deux lignes de données ne produit pas un écran noir mais des motifs incohérents, ce qui fait chercher la panne au mauvais endroit.
Les bibliothèques
Deux bibliothèques de Marco Colli, disponibles dans le gestionnaire de bibliothèques de l’IDE Arduino : installez MD_MAX72XX, puis MD_Parola. La première pilote les puces, la seconde gère le défilement. L’installation des deux prend une minute et évite d’écrire soi-même la table des caractères et le décalage colonne par colonne.
Le programme
/*
* Texte defilant sur une matrice MAX7219 8 x 32 (4 blocs chaines)
* Carte : Arduino Uno
* Bibliotheques : MD_MAX72XX et MD_Parola, de Marco Colli
*
* Composants, brochage et fiche complete : www.marocproduits.com
*/
#include "SPI.h"
#include "MD_MAX72XX.h"
#include "MD_Parola.h"
// Type de materiel : FC16_HW correspond aux modules 4 en 1 du commerce
#define TYPE_MATERIEL MD_MAX72XX::FC16_HW
// Nombre de blocs 8 x 8 chaines sur la carte
#define NB_BLOCS 4
// Broche de selection : D10, MOSI en D11 et horloge en D13 par le bus SPI
#define BROCHE_CS 10
MD_Parola afficheur(TYPE_MATERIEL, BROCHE_CS, NB_BLOCS);
const char MESSAGE[] = "BONJOUR - MATRICE MAX7219 8 x 32 ";
void setup() {
afficheur.begin();
afficheur.setIntensity(6); // luminosite de 0 a 15
afficheur.displayClear();
// Texte, alignement, vitesse en ms par pas, pause, effet d'entree, effet de sortie
afficheur.displayText(MESSAGE, PA_CENTER, 45, 800, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
}
void loop() {
// displayAnimate fait avancer l'animation ; il renvoie vrai quand le texte a fini
if (afficheur.displayAnimate()) {
afficheur.displayReset(); // on repart du debut, en boucle
}
}Comment ça marche
MD_Parola afficheur(TYPE_MATERIEL, BROCHE_CS, NB_BLOCS)déclare l’afficheur et surtout le nombre de blocs. C’est ce paramètre qui indique à la bibliothèque que la carte fait 32 points de large : avecNB_BLOCSà 1, tout le texte s’entasserait dans le premier bloc de huit colonnes.FC16_HWdécrit le brochage interne des puces sur la carte. Les modules 4 en 1 du commerce utilisent tous ce type ; s’il existe un doute, les exemples de la bibliothèque permettent de le vérifier en changeant cette seule ligne.displayText()reçoit le texte, l’alignement, la vitesse en millisecondes par pas de défilement, la pause en fin de course, puis les effets d’entrée et de sortie.PA_SCROLL_LEFTfait glisser le texte vers la gauche, comme un bandeau.displayAnimate()est à appeler en boucle : c’est cette fonction qui fait avancer le texte d’une colonne, sans bloquer le reste du programme. Elle renvoie vrai lorsque l’animation est terminée, etdisplayReset()la relance.setIntensity()accepte une valeur de 0 à 15. À 6, le texte reste lisible en intérieur tout en consommant bien moins qu’à 15 : c’est le premier réglage à baisser si l’alimentation est juste.- Les espaces en fin de
MESSAGEne sont pas décoratifs : ils créent la respiration entre la fin d’un passage et le début du suivant, sans quoi le texte se recolle à lui-même.
Pour aller plus loin
- Changer de sens —
PA_SCROLL_RIGHTfait remonter le texte depuis la gauche, utile pour un balayage alterné. - Un texte qui vient du port série — remplacez
MESSAGEpar uncharrempli dansloop(): le bandeau devient pilotable depuis l’ordinateur. - Clignotement ou apparition — les effets
PA_PRINT,PA_SCAN_HORIZetPA_OPENING_CURSORremplacent le défilement pour un affichage fixe mis en valeur. - Une horloge — un module d’horloge temps réel fournit l’heure exacte même après une coupure, et il ne reste qu’à composer la chaîne de caractères à afficher.
- Vérifier le câblage en une seconde — appelez
afficheur.control(MD_MAX72XX::TEST, MD_MAX72XX::ON): tous les points s’allument d’un coup. Un point manquant désigne une puce ou un bloc fautif, pas le programme.
Variante : deux modules, 64 colonnes
Un second module se chaîne par le connecteur de sortie du premier : DOUT du premier vers DIN du second, plus VCC, GND, CS et CLK mis en commun — cinq fils de plus, et les mêmes trois fils vers la carte de commande. Côté programme, il n’y a qu’un chiffre à changer : NB_BLOCS passe à 8. Dans ce cas, prévoyez une alimentation externe 5 V plutôt que la sortie de la carte : 512 LED à pleine intensité réclament le double de courant.
Questions fréquentes
L’affichage est illisible, ou les blocs semblent inversés
Trois causes courantes. Le nombre de blocs est faux dans le programme : avec NB_BLOCS à 1 ou 2, la bibliothèque écrit dans les premiers blocs seulement. Le type de matériel ne correspond pas au brochage de la carte, ce qui se corrige en changeant la constante FC16_HW. Ou le module est simplement branché à l’envers par rapport aux flèches IN et OUT : les données entrent alors par la sortie, et l’image se reconstruit en désordre.
Rien ne s’allume
Vérifiez d’abord VCC et GND : le MAX7219 réclame 5 V et refuse de fonctionner en dessous de 4 V environ. Contrôlez ensuite la broche CS : c’est un front sur cette ligne qui valide réellement les données, et une broche erronée dans le programme suffit à tout bloquer. Enfin, une inversion entre DIN et CLK n’éteint pas l’afficheur mais ne produit rien de lisible. L’appel de test décrit plus haut tranche en une seconde entre une panne de câblage et une erreur de code.
Des points parasites, ou un affichage qui se corrompt par intermittence
C’est presque toujours l’alimentation. Les 256 LED ne s’allument pas ensemble mais par rangées, ce qui crée des appels de courant brefs et répétés ; une source trop faible fait chuter la tension à cet instant et corrompt la donnée en cours de transfert. Ajoutez un condensateur près du connecteur d’entrée, baissez l’intensité, et si le montage comporte plusieurs modules, passez à une alimentation 5 V séparée avec la masse mise en commun.
Le texte défile mais le programme n’est plus réactif
displayAnimate() ne bloque pas : si votre boucle ne répond plus à un bouton ou à un capteur, c’est qu’un delay() traîne ailleurs dans loop(). Confiez toute temporisation à millis() et laissez l’animation avancer à chaque passage.
Puis-je l’utiliser avec un ESP32 ou un Raspberry Pi ?
Oui, le module s’alimente toujours en 5 V et se commande par SPI. Sur ESP32, prenez le 5 V sur la broche d’alimentation USB et les lignes DIN, CLK et CS sur le bus VSPI. Les entrées logiques du module fonctionnent en pratique avec les 3,3 V de la carte ; si l’affichage se montre erratique, intercalez un adaptateur de niveau sur ces trois lignes. Sous Raspberry Pi, activez le SPI et alimentez le module sur la broche 5 V du connecteur, jamais sur une sortie 3,3 V.
Combien de LED peut-on chaîner ?
Rien ne limite le nombre en théorie : chaque module supplémentaire ajoute ses quatre puces au bout de la même chaîne, avec cinq fils entre deux modules. La limite réelle est celle de l’alimentation et de la vitesse de rafraîchissement — la bibliothèque doit écrire huit octets par module à chaque image. Au-delà de trois ou quatre modules, une source 5 V dédiée et de bonne qualité devient indispensable.
À combiner avec
Pour le montage de cette page, il vous faut une carte Uno R3 et des fils mâle-mâle ; le Kit Arduino Uno maroc réunit la carte, la plaque d’essai et les fils, ce qui laisse la matrice comme seul achat. Pour rendre l’affichage autonome, ajoutez une alimentation 5 V 2 A : elle alimente la matrice et la carte en même temps.
Si l’objectif est une horloge, le module d’horloge temps réel DS3231 fournit l’heure exacte même après une coupure de courant, et le capteur DHT11 ajoute la température au bandeau. Ceux qui préfèrent le Wi-Fi prendront un ESP32, qui pilote la matrice et reçoit les textes à distance.
Pour un premier essai, ou pour un montage plus court, la matrice 8 × 8 MAX7219 reprend exactement le même principe en un seul bloc, et se pilote avec le même programme en mettant NB_BLOCS à 1. Le module TM1637 convient mieux quand seuls quatre chiffres sont nécessaires : deux fils suffisent, mais il ne sait pas faire défiler de texte. Et si vous préférez câbler les puces vous-même, le circuit MAX7219 en boîtier DIP se commande par les mêmes trois fils et les mêmes registres que celles qui équipent cette carte.








