Led Matrice Arduino 8x8 Max7219

Bonjour à tous je viens d'essayer sur mon arduino un petit module led 8x8 avec un Max7219
Mon montage fonctionne bien je fais defiler les lettres L,E,D,S une à une.
Je m'attaque maintenaint au scroll d'un message vers la gauche.

Par contre une question me trotte dans la tete :

  • j'ai inseré un caratère U à la fin de mon code volontairement et j'essaye d'allumer ttes leds de la matrice et cela ne fonctionne pas pourquoi cela ?

  • Ensuite ma lettre L ne commence pas au bord gauche de ma matrice mais une colonne aprés ?

#include <Sprite.h>  // Sprite before Matrix
#include <Matrix.h>

//                  DIN, CLK, LOAD, #chips
Matrix myLeds = Matrix(22, 26, 24, 1);

Sprite letter_L = Sprite(8, 8,
  B11100000,
  B11000000,
  B11000000,
  B11000000,
  B11000000,
  B11000000,
  B11111000,
  B11111000
);
Sprite letter_E = Sprite(5, 8,
  B11111,
  B11111,
  B11000,
  B11110,
  B11110,
  B11000,
  B11111,
  B11111
);
Sprite letter_D = Sprite(6, 8,
  B111100,
  B111110,
  B110111,
  B110011,
  B110011,
  B110111,
  B111110,
  B111100
);
Sprite letter_S = Sprite(5, 8,
  B01110,
  B11111,
  B11000,
  B11110,
  B01111,
  B00011,
  B11111,
  B01110
);

Sprite letter_U = Sprite(8, 8,
  B11111111,
  B11111111,
  B11111111,
  B11111111,
  B11111111,
  B11111111,
  B11111111,
  B11111111,
);


void setup() {
  
}

void loop() {
myLeds.clear();
  myLeds.setBrightness(4);
  myLeds.write(2, 0, letter_L);
  delay(500);
  myLeds.clear();
  myLeds.write(2, 0, letter_E);
  delay(500);
  myLeds.clear();
  myLeds.write(2, 0, letter_D);
  delay(500);
 myLeds.clear();
  myLeds.write(2, 0, letter_U);
  delay(500);
  myLeds.clear();
}

Y a t'il des une bibliothèques standard avec tt les caractères le but étant de faire un scroll d'un message envoyer directement via le pc
Cordialement,
bypbop

bypbop:
j'essaye d'allumer ttes leds de la matrice et cela ne fonctionne pas pourquoi cela ?

C'est alimenté avec quoi, une alim externe ? Parce que 8x8=64 led à la fois ça consomme pas mal.

Christian_R:

bypbop:
j'essaye d'allumer ttes leds de la matrice et cela ne fonctionne pas pourquoi cela ?

C'est alimenté avec quoi, une alim externe ? Parce que 8x8=64 led à la fois ça consomme pas mal.

Non car avec un 7219 l'affichage est multiplexé 800 fois par secondes et quand toute la matrice est allumée il n'y a en fait qu'une seule rangée allumée simultanément.

J'utilise quant à moi la librairie LedControl, et je fais du scrolling avec, mais il n'y a pas de police de caractère intégrée. Il faut le faire soi-même. En plus moi je le fais en chinois :grin:
J'en parle ici sur mon blog: Un peu d'animation, ou le scrolling à base de MAX7219 - BreizhMakers

Merci à tous,

mais bizarrement ceci ne compile pas cela me donne une erreur :

Sprite letter_U = Sprite(8, 8,
  B11111111,
  B11111111,
  B11111111,
  B11111111,
  B11111111,
  B11111111,
  B11111111,
  B11111111,
);

Pourtant cela fait bien 8x8 ...

Cordialement,
bypbop

On ne peut pas faire grand chose pour toi sans savoir quelle erreur cela produit...

oupss désolé :

Matrix8x8_3:47: error: expected primary-expression before '(' token
Matrix8x8_3:56: error: expected primary-expression before ')' token

Cordialement,
bypbop

T'as une virgule en trop à la fin de ton initialisation:

B11111111,
);

devrait être

B11111111
);

L'erreur est aussi présente dans ton extrait de code initial un peu plus haut.

lol jsuis nul :wink:
un grand merci.

Je garde le post ouvert je vais m'inspirer de ton blog pour faire mon scroll cette semaine.

Cordialement,
bypbop

C'est jamais simple de voir ce genre d'erreur soi-même.

T'as une lib pour le 7219 avec une police de caractères ASCII et des fonctions de scrolling ici:
https://docs.google.com/folder/d/0BzF-I8HZ7DTROGY5ODFiZTItN2E0MC00NjA5LTg1OWEtNTc4ZGJlYTQ2MjZk/edit?pli=1&docId=0BzF-I8HZ7DTRODkxMWI4NzItODVjMS00ZWM1LWIyYTYtNTRiNzBmZGVkNjE2

Je ne l'ai jamais utilisée mais ça ressemble à ce que tu recherches.

Bonjour voila j'ai fait un petit test moi mm pour essayer de mieux comprendre.
Je fais defiler une lettre de la droite vers la gauche mais cela ne s affiche pas sur la 8eme colonne.

Ma lettre devrait commencer sur la 8 puis la 7 et ainsi de suite mais cela commence sur la 7 6 5 3

J'ai remarqué que ma 8 eme colonne correspondait à 0

1 2 3 4 5 6 7 0

J'ai fait ceci :

#include <Sprite.h>  // Sprite before Matrix
#include <Matrix.h>

//                  DIN, CLK, LOAD, #chips
Matrix myLeds = Matrix(22, 26, 24, 1);
int y;
int x;
Sprite letter_L = Sprite(5, 8,
  B11000,
  B11000,
  B11000,
  B11000,
  B11000,
  B11000,
  B11111,
  B11111
);
Sprite letter_E = Sprite(5, 8,
  B11111,
  B11111,
  B11000,
  B11110,
  B11110,
  B11000,
  B11111,
  B11111
);
Sprite letter_D = Sprite(6, 8,
  B111100,
  B111110,
  B110111,
  B110011,
  B110011,
  B110111,
  B111110,
  B111100
);
Sprite letter_S = Sprite(5, 8,
  B01110,
  B11111,
  B11000,
  B11110,
  B01111,
  B00011,
  B11111,
  B01110
);
Sprite letter_U = Sprite(8, 8,
  B11111111,
  B11111111,
  B11111111,
  B11111111,
  B11111111,
  B11111111,
  B11111111,
  B11111111
);


void setup() {
Serial.begin(57600); 
}

void loop() {
myLeds.clear();
myLeds.setBrightness(4);
for (x=8; x>=1; x = x - 1 ){
Serial.println(x);
myLeds.write(x, 0, letter_L);
delay(500);
myLeds.clear();
}
  
}

Qu'en pensez vous ?

Cordialement,
bypbop

Par contre sur le Y cela marche bien

void loop() {
myLeds.clear();
myLeds.setBrightness(4);
for (y=7; y>=0; y = y - 1 ){
Serial.println(y);
myLeds.write(1, y, letter_E);
if (y==0){
delay(1000);
}
else
{
delay(50);
}
myLeds.clear();
}
  
}

J'ai bien mon E qui commence tt en bas jusqu'en haut de mon 8x8

Cordialement,
bypbop

Le premier élément d'un tableau est le zéro-ième (index 0), le second a pour index 1, etc.
Donc faire une boucle 0-7 pour 8 éléments.

Oui j ai bien compris mais pour ma matrice sur le x j ai
1 2 3 4 5 6 7 0 et sur le y J ai bien 0 1 2 3 4 5 6 7 ce qui me parait normal

Mais le x ???

Cordialement,
Bypbop

J'ai fait une petite photos pour montrer ce que cela donne sur X

J'affiche tt simplement ma lettre L en mettant sur x=0

http://bypbop.dyndns.dk/IMG_0110.jpg

#include <Sprite.h>  // Sprite before Matrix
#include <Matrix.h>

//                  DIN, CLK, LOAD, #chips
Matrix myLeds = Matrix(22, 26, 24, 1);

Sprite letter_L = Sprite(5, 8,
  B11000,
  B11000,
  B11000,
  B11000,
  B11000,
  B11000,
  B11111,
  B11111
);



void setup() {
  
}

void loop() {
myLeds.clear();
  myLeds.setBrightness(4);
  myLeds.write(0, 0, letter_L);
  delay(5000);
  myLeds.clear();
  
}

Si je veux faire un scroll de la droite vers la gauche dans une boucle cela me parait bizarre. je ne peux pas incrementer x de 0 à 7 directement.

Cordialement,
bypbop

Bonjour,

J'utilise 4 modules à LED 8 x 8 (avec un MAX 7219) montés en cascade mais le problème que j'ai le fait également avec un module.

Le souci est simple: il affiche avec un effet miroir et le texte défile à l'envers (de la gauche vers la droite)

Je précise :

Branchement : DIN sur PIN 11, CS sur PIN 10 et CLK sur PIN 13.

J'utilise par exemple la bibliothèque MD_72XX avec l'exemple "TEST".

Toutes les lettres et les chiffres sont affichés avec un effet miroir (donc même si je retourne l'afficheur cela ne change rien)!

Pourriez-vous m'aider svp?

Cordialement,

Poste ton code, ou mieux : commence un nouveau fil de discussion plutôt que relancer un vieux de 6 ans!