Bonjour à tous, dans cet article je vais vous présenter comment j’ai contrôlé une matrice LED via mon Arduino. 

Dans ce tutoriel vous aurez besoin uniquement d’un Arduino et d’une matrice (personnellement je possède un module avec 4 matrices de 8x8 assemblés).

Branchement:

Pour le branchement nous avons 5 sorties, suivez le branchement ci-dessous:

Matrice -> Arduino
VCC          ->     5v
GND         ->    GND
DIN          ->    Pin 8
CS             ->    Pin 9
CLK          ->    Pin 10

Fonctionnement:

Une matrice 8x8 est composée de 8 lignes de 8 LED , donc 64 LED par matrice (8x8).

Dans notre cas il y a 4 matrices de 8x8 donc 256 LED (64x4).

Dans le code nous allons donc choisir quelle LED allumer sur nos matrices.

Nous allons donc commencer par installer la bibliothèque LedControlMS.

Télécharger ce fichier (https://github.com/shaai/Arduino_LED_matrix_sketch), décompresser le dans le dossier librairies de l’Arduino.

Créer un nouveau fichier dans votre IDE Arduino, commencez par inclure cette bibliothèque.

#include LedControlMS.h

Indiquez le nombre de matrice (4 dans mon cas).

byte max_units = 4;
Dites à la librairie les pins utiliser

LedControl lc=LedControl(8,10,9,max_units);

Nous allons donc maintenant enregistrer ce que nous voulons marquer sur cette matrice (pour nous on va écrire du texte, le mot ALLE).
Pour cela il faut indiquer ligne par ligne, chaque LED allumée (1) ou éteinte (0), en commençant par la ligne bas et la LED droite.

unsigned long delaytime=1;
 byte A[8]={B01000010, B01000010, B01000010, B01111110, B01000010, B01000010, B01111110, B00000000};
 byte E[8]={B00011110, B00000010, B00000010, B00001110, B00000010, B00000010, B00011110, B00000000};
 byte L[8]={B01111100, B00000100, B00000100, B00000100, B00000100, B00000100, B00000100, B00000000};

Maintenant nous allons créer une fonction pour afficher les caractères souhaités.
Dans les parenthèses nous spécifions en premier argument la position (0 pour la matrice 1, 1 pour la 2ème, etc…), le deuxième argument correspond au numéro de la LED par ligne puis le 3ème argument correspond au caractère à afficher puis le numéro de la LED.

void Mattrice() {
 lc.setRow(0,0,A[0]);
 lc.setRow(0,1,A[1]);
 lc.setRow(0,2,A[2]);
 lc.setRow(0,3,A[3]);
 lc.setRow(0,4,A[4]);
 lc.setRow(0,5,A[5]);
 lc.setRow(0,6,A[6]);
 lc.setRow(0,7,A[7]);
 delay(10);
 lc.setRow(1,0,L[0]);
 lc.setRow(1,1,L[1]);
 lc.setRow(1,2,L[2]);
 lc.setRow(1,3,L[3]);
 lc.setRow(1,4,L[4]);
 lc.setRow(1,5,L[5]);
 lc.setRow(1,6,L[6]);
 lc.setRow(1,7,L[7]);
 delay(10);
 lc.setRow(2,0,L[0]);
 lc.setRow(2,1,L[1]);
 lc.setRow(2,2,L[2]);
 lc.setRow(2,3,L[3]);
 lc.setRow(2,4,L[4]);
 lc.setRow(2,5,L[5]);
 lc.setRow(2,6,L[6]);
 lc.setRow(2,7,L[7]);
 delay(10);
 lc.setRow(3,0,E[0]);
 lc.setRow(3,1,E[1]);
 lc.setRow(3,2,E[2]);
 lc.setRow(3,3,E[3]);
 lc.setRow(3,4,E[4]);
 lc.setRow(3,5,E[5]);
 lc.setRow(3,6,E[6]);
 lc.setRow(3,7,E[7]);
 delay(10);
}
 void set_unit(byte number_of_unit){
 lc.shutdown(number_of_unit-1,false);
 lc.setIntensity(number_of_unit-1,1);
 lc.clearDisplay(number_of_unit-1);
}

Puis on l’affiche dans le loop().

void loop(){
Mattrice();
 delay(5000);
 for(byte i=1;i<=6;i++)
{
 set_unit(i);
}
}

Voilà le code complet.

#include <LedControlMS.h>
byte max_units = 4;
LedControl lc=LedControl(8,10,9,max_units);

unsigned long delaytime=1;
  byte A[8]={B01000010, B01000010, B01000010, B01111110, B01000010, B01000010, B01111110, B00000000};
  byte E[8]={B00011110, B00000010, B00000010, B00001110, B00000010, B00000010, B00011110, B00000000};
  byte L[8]={B01111100, B00000100, B00000100, B00000100, B00000100, B00000100, B00000100, B00000000};
void setup() {
}
void Mattrice() {
    lc.setRow(0,0,A[0]);
    lc.setRow(0,1,A[1]);
    lc.setRow(0,2,A[2]);
    lc.setRow(0,3,A[3]);
    lc.setRow(0,4,A[4]);
    lc.setRow(0,5,A[5]);
    lc.setRow(0,6,A[6]);
    lc.setRow(0,7,A[7]);
    delay(10);
    lc.setRow(1,0,L[0]);
    lc.setRow(1,1,L[1]);
    lc.setRow(1,2,L[2]);
    lc.setRow(1,3,L[3]);
    lc.setRow(1,4,L[4]);
    lc.setRow(1,5,L[5]);
    lc.setRow(1,6,L[6]);
    lc.setRow(1,7,L[7]);
    delay(10);
    lc.setRow(2,0,L[0]);
    lc.setRow(2,1,L[1]);
    lc.setRow(2,2,L[2]);
    lc.setRow(2,3,L[3]);
    lc.setRow(2,4,L[4]);
    lc.setRow(2,5,L[5]);
    lc.setRow(2,6,L[6]);
    lc.setRow(2,7,L[7]);
    delay(10);
    lc.setRow(3,0,E[0]);
    lc.setRow(3,1,E[1]);
    lc.setRow(3,2,E[2]);
    lc.setRow(3,3,E[3]);
    lc.setRow(3,4,E[4]);
    lc.setRow(3,5,E[5]);
    lc.setRow(3,6,E[6]);
    lc.setRow(3,7,E[7]);
    delay(10);
}
 void set_unit(byte number_of_unit){
  lc.shutdown(number_of_unit-1,false);
  lc.setIntensity(number_of_unit-1,1);
  lc.clearDisplay(number_of_unit-1);
}
void loop() { 
    Mattrice();
    delay(5000);
   for(byte i=1;i<6;i++)
{
  set_unit(i);
}
}

Voilà vous savez maintenant comment j’utilise ma matrice.

J’ESPÈRE QUE CE TUTORIEL VOUS A PLU !
AMUSEZ-VOUS BIEN !!!!