Page 1 sur 1

Réseau de LED 8x8 MAX7219 - Tutoriel Arduino

MessagePosté: Lun 19 Aoû 2013 14:47
par tiptop
Réseau de LED 8x8 MAX7219 - Tutoriel de branchement et programmation Arduino

Composants utilisés
Image.Image

Principe
L'afficheur comporte 8 lignes et 8 colonnes de LED, contrôlables individuellement.
Il permet d'afficher avec ces 64 LED 256 x 256 motifs possibles = 65 536 combinaisons lumineuses.

Tous les caractères numériques, alphabétiques, ou caractères spéciaux sont donc affichables.
La brillance des leds peut être ajustée par logiciel.

Montage
L'afficheur MAX7219 Dot Matrix est fourni en kit simple à souder.
  • Souder la résistance et les deux condensateurs (l'électrolytique est polarisé, attention au sens)
  • Souder le support de circuit (placer l'encoche comme sur le schéma imprimé)
  • Souder les 2 connecteurs et les 2 supports d'afficheur.
  • Placer le circuit intégré et l'afficheur à cathode commune sur leurs supports.

Fonctionnement
Il suffit de 3 fils de commandes et 2 fils d'alimentation pour contrôler un ou plusieurs afficheurs.
Le pilotage est très simple depuis une carte Arduino.
Il se fait en mode série et utilise la persistance rétinienne en balayant les 8 colonnes rapidement.

Des modules identiques peuvent s'enchaîner en reliant Din et Dout d'un premier module au suivant.

Câblage 5 fils
Image

Module --> Arduino
  • Gnd --> GND il faut impérativement relier les masses du module et du contrôleur
  • +V > 5V
  • DIN --> Pin8
  • CS --> Pin 9
  • CLK --> Pin 10
Le module 8x8 leds peut fonctionner avec l'alimentation 5V de l'Arduino pour les tests.
Utiliser une alimentation séparée (5 V, 2 A) si on en utilise plusieurs, ou combinés avec d'autres composants.

La consommation des 64 leds allumées à la fois est de 400 mA. (8 x 50mA et temps de cycle de 1/8), le port USB peut fournir 500 mA depuis un PC alimenté.

Programmation
Il n'y a pas besoin de librairie spécifique à installer.

Cet exemple de code affiche successivement 0 1 2 3 4 5 6 7 8 9 puis A--Z.
Code: Tout sélectionner
// Exemple de code Module Max7219 reseau de 8x8 LEDS
//
// Revision 19 08 2013

 unsigned char j;
//Cablage du module (gnd et +V) utilise 3 pins
int Max7219_pinCLK = 10; 
int Max7219_pinCS = 9;
int Max7219_pinDIN = 8;

//Définition des pixels a eclairer
//0-9 puis A-Z soit 10+26 = 36 caractères

unsigned char disp1[38][8]={
{0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C},//0
{0x10,0x30,0x50,0x10,0x10,0x10,0x10,0x10},//1
{0x7E,0x2,0x2,0x7E,0x40,0x40,0x40,0x7E},//2
{0x3E,0x2,0x2,0x3E,0x2,0x2,0x3E,0x0},//3
{0x8,0x18,0x28,0x48,0xFE,0x8,0x8,0x8},//4
{0x3C,0x20,0x20,0x3C,0x4,0x4,0x3C,0x0},//5
{0x3C,0x20,0x20,0x3C,0x24,0x24,0x3C,0x0},//6
{0x3E,0x22,0x4,0x8,0x8,0x8,0x8,0x8},//7
{0x0,0x3E,0x22,0x22,0x3E,0x22,0x22,0x3E},//8
{0x3E,0x22,0x22,0x3E,0x2,0x2,0x2,0x3E},//9
{0x8,0x14,0x22,0x3E,0x22,0x22,0x22,0x22},//A
{0x3C,0x22,0x22,0x3E,0x22,0x22,0x3C,0x0},//B
{0x3C,0x40,0x40,0x40,0x40,0x40,0x3C,0x0},//C
{0x7C,0x42,0x42,0x42,0x42,0x42,0x7C,0x0},//D
{0x7C,0x40,0x40,0x7C,0x40,0x40,0x40,0x7C},//E
{0x7C,0x40,0x40,0x7C,0x40,0x40,0x40,0x40},//F
{0x3C,0x40,0x40,0x40,0x40,0x44,0x44,0x3C},//G
{0x44,0x44,0x44,0x7C,0x44,0x44,0x44,0x44},//H
{0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x7C},//I
{0x3C,0x8,0x8,0x8,0x8,0x8,0x48,0x30},//J
{0x0,0x24,0x28,0x30,0x20,0x30,0x28,0x24},//K
{0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7C},//L
{0x81,0xC3,0xA5,0x99,0x81,0x81,0x81,0x81},//M
{0x0,0x42,0x62,0x52,0x4A,0x46,0x42,0x0},//N
{0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C},//O
{0x3C,0x22,0x22,0x22,0x3C,0x20,0x20,0x20},//P
{0x1C,0x22,0x22,0x22,0x22,0x26,0x22,0x1D},//Q
{0x3C,0x22,0x22,0x22,0x3C,0x24,0x22,0x21},//R
{0x0,0x1E,0x20,0x20,0x3E,0x2,0x2,0x3C},//S
{0x0,0x3E,0x8,0x8,0x8,0x8,0x8,0x8},//T
{0x42,0x42,0x42,0x42,0x42,0x42,0x22,0x1C},//U
{0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18},//V
{0x0,0x49,0x49,0x49,0x49,0x2A,0x1C,0x0},//W
{0x0,0x41,0x22,0x14,0x8,0x14,0x22,0x41},//X
{0x41,0x22,0x14,0x8,0x8,0x8,0x8,0x8},//Y
{0x0,0x7F,0x2,0x4,0x8,0x10,0x20,0x7F},//Z
};

//Autre exemple, caracteres speciaux (a definir soi meme)
//Voir explications sur http://tiptopboards.com/arduino_tutoriel/posting.php?mode=edit&f=2&p=6
//{0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55},  //damier1
// {0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA},  //damier2
 
//Ecriture d'un caractere 8x8
void Write_Max7219_byte(unsigned char DATA)
{   
            unsigned char i;
       digitalWrite(Max7219_pinCS,LOW);      
       for(i=8;i>=1;i--)
          {       
             digitalWrite(Max7219_pinCLK,LOW);
             digitalWrite(Max7219_pinDIN,DATA&0x80);// Extracting a bit data
             DATA = DATA<<1;
             digitalWrite(Max7219_pinCLK,HIGH);
           }                                 
}
 
//Ecriture elementaire d une seule rangee
void Write_Max7219(unsigned char address,unsigned char dat)
{
        digitalWrite(Max7219_pinCS,LOW);
        Write_Max7219_byte(address);           //address,code of LED
        Write_Max7219_byte(dat);               //data,figure on LED
        digitalWrite(Max7219_pinCS,HIGH);
}

//Initialisation du module Max 7219
void Init_MAX7219(void)
{
 Write_Max7219(0x09, 0x00);       //decoding :BCD
 Write_Max7219(0x0a, 0x03);       //brightness
 Write_Max7219(0x0b, 0x07);       //scanlimit;8 LEDs
 Write_Max7219(0x0c, 0x01);       //power-down mode:0,normal mode:1
 Write_Max7219(0x0f, 0x00);       //test display:1;EOT,display:0
}
 
 
//Le programme d affichage
void setup()
{
 //Pins a utiliser
  pinMode(Max7219_pinCLK,OUTPUT);
  pinMode(Max7219_pinCS,OUTPUT);
  pinMode(Max7219_pinDIN,OUTPUT);
  delay(50);  //Initialiser
  Init_MAX7219();
}
 
 
void loop()
{
   for(j=0;j<38;j++)
  {  //Faire défiler les caracteres a afficher
   for(int i=1;i<9;i++)  //Afficher un caractere à la fois
    Write_Max7219(i,disp1[j][i-1]);
   delay(500);  //Attente pour laisser le temps de lire
   
  }       
}


Image.Image.Image

Codage de nouveaux motifs et caractères
Il est facile de créer ses propres motifs personnalisés.
Dessiner un caractère sur une grille carrée 8 x 8. On le décompose ensuite ligne par ligne.

Rappel du codage binaire
Image

Exemple pour afficher "A" il suffit de définir ceci dans un tableau
{0x8,0x14,0x22,0x3E,0x22,0x22,0x22,0x22}, //A
Image

Pour afficher le "1"
{0x10,0x30,0x50,0x10,0x10,0x10,0x10,0x10},//1
Image

Pour afficher un damier alterné
{0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55},//damier
Image


Montage et schéma du module
Image

Image

Références
LED Matric kit
http://linksprite.com/wiki/index.php5?t ... Matrix_Kit

User guide en PDF
https://s3.amazonaws.com/linksprite/Ard ... ide_V2.pdf

http://viewitem.eim.ebay.cz/MAX7219-Red ... 88970/item

MAX7219 driver
http://playground.arduino.cc/Main/MAX72 ... ngPrintout

Re: Réseau de LED 8x8 MAX7219 - Tutoriel Arduino

MessagePosté: Ven 2 Jan 2015 03:22
par JS7777
Comment faire pour faire défiler des caractères ?

Merci d'avance

Re: Réseau de LED 8x8 MAX7219 - Tutoriel Arduino

MessagePosté: Mer 7 Jan 2015 21:04
par pinou29
Bonjour.
A partir de l'exemple donné pour dessiner le A, le 1 ou le damier, il suffit de mettre les codes sur l'aspect que l'on veut donner à la grille.
Pour ma part, j'ai pris un bloc "Rodia" et sur chaque feuille j'ai tracé ce que je voulais obtenir ce qui me donne le code.
Bernard.

Re: Réseau de LED 8x8 MAX7219 - Tutoriel Arduino

MessagePosté: Sam 24 Jan 2015 02:07
par JS7777
Merci mais je voulais dire faire un scroll, un défilement.

http://www.youtube.com/watch?v=F9ijY66eJ24