Réseau de LED 8x8 MAX7219 - Tutoriel Arduino

Utilisation de capteurs et composants électroniques avec Arduino.
Une fiche de tutoriel pour chaque.

Réseau de LED 8x8 MAX7219 - Tutoriel Arduino

Messagepar tiptop » Lun 19 Aoû 2013 14:47

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
tiptopboards - admin
Avatar de l’utilisateur
tiptop
Administrateur du site
 
Messages: 88
Inscription: Mar 13 Aoû 2013 20:38
Localisation: 38

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

Messagepar JS7777 » Ven 2 Jan 2015 03:22

Comment faire pour faire défiler des caractères ?

Merci d'avance
JS7777
 
Messages: 4
Inscription: Mer 31 Déc 2014 18:01

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

Messagepar pinou29 » Mer 7 Jan 2015 21:04

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.
Breton avant d'être Français.
En Bretagne, la pluie ne mouille que les cons (Olivier de kersauson)
pinou29
 
Messages: 5
Inscription: Jeu 24 Juil 2014 21:23

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

Messagepar JS7777 » Sam 24 Jan 2015 02:07

Merci mais je voulais dire faire un scroll, un défilement.

http://www.youtube.com/watch?v=F9ijY66eJ24
JS7777
 
Messages: 4
Inscription: Mer 31 Déc 2014 18:01


Retourner vers Capteurs et composants

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité