Ce module est commandé grâce à une liaison SPI et doit être alimenté par une alimention 5V de forte puissance car lorsque toutes les led sont allumées, nous avons affaire à une consommation proche de1,5A.
Chaque caractère affiché est codé sur 8 octets. Un logiciel MatrixToPixel téléchargeable ici permet de générer automatiquement les 8 octets en fonction du caractère que l'on souhaite afficher. Libre à vous de laisser votre esprit créatif pour dessiner ce que vous souhaitez !!
Il existe plusieurs bibliothèques gérant ce module. Pour l'exemple ci-dessous, nous allons utiliser la bibliothèque Parola téléchargeable ici. Ses principales fonctions sont :
-
MD_Parola matrice = MD_Parola(broche_CS, MAX_MODULES) où broche_CS représente la broche de sélection du module et MAX_MODULES représente le nombre de modules commandés. Cette fonction permet de créer l'objet.
-
matrice.begin() permet d'initialiser l'objet.
-
matrice.displayText("texte", PA_CENTER, 0, 0, PA_PRINT, PA_NO_EFFECT) permet d'afficher le texte au centre des modules.
-
matrice.displayAnimate() valide l'affichage du texte.
Dans l'univers Arduino, le module matrice à led est principalement utilisé dans des applications nécessitant un affichage.
Câblage :
Liste du matériel :
-
1 Arduino Uno
-
2 boutons poussoirs
-
4 modules matrice à led
Exemple :
Nous souhaitons réaliser un compte à rebours commandé par deux boutons poussoirs, l'un permettant de lancer le décomptage et l'autre de mettre en pause.
Programme :
/* Matrice est un programme qui affiche le temps se décrémentant toutes les secondes à partir de 3 minutes.
* Le compte à rebours est lancé par un bouton Start et peut être mis en pause par un bouton Pause.
*/
#include <MD_Parola.h> // appel des bibliothèques
#include <MD_MAX72xx.h>
#include <SPI.h>
#define bouton_start 2 // affectation des broches
#define bouton_stop 3
#define MAX_DEVICES 4
#define CLK_PIN 13
#define DATA_PIN 11
#define CS_PIN 10
char message[4]; // initialisation des variables
int minute=3;
int seconde=0;
int dizaine;
int unite;
unsigned long last_time = 0;
unsigned long time_now;
MD_Parola matrice = MD_Parola(CS_PIN, MAX_DEVICES); // création de l'objet matrice
void setup()
{
pinMode(bouton_start, INPUT_PULLUP); // configuration des broches en entrée avec résistance de tirage
pinMode(bouton_stop, INPUT_PULLUP);
matrice.begin(); // initialisation de l'objet matrice
matrice.displayText("03:00", PA_CENTER, 0, 0, PA_PRINT, PA_NO_EFFECT); // affichage de 03:00
matrice.displayAnimate();
}
void loop()
{
do
{
}
while (digitalRead(bouton_start)==1); // attente de l'appui sur Start
do // boucle tant que Stop est inactif
{ // décomptage du temps
time_now = millis();
if(time_now - last_time >= 1000)
{
seconde=seconde-1;
last_time=millis();
}
if (seconde<0)
{
seconde=59;
minute=minute-1;
}
dizaine=seconde/10;
unite=seconde%10;
message[4]=unite+48; // conversion entier vers ASCII
message[3]=dizaine+48;
message[2]=58;
message[1]=minute+48;
message[0]=48;
matrice.displayText(message, PA_CENTER, 0, 0, PA_PRINT, PA_NO_EFFECT); // affichage du temps
matrice.displayAnimate();
if (minute<0) // fin du temps
{
matrice.displayText("00:00", PA_CENTER, 0, 0, PA_PRINT, PA_NO_EFFECT); // affichage de 00:00
matrice.displayAnimate();
}
LE MODULE MATRICE A LED
Le module matrice à led comporte un circuit intégré MAX7219 pilotant une matrice de 64 led disposées en 8 lignes par 8 colonnes comme sur la figure suivante :