Go Down

Topic: Led Matrice Arduino 8x8 Max7219 (Read 2 times) previous topic - next topic

bypbop

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 ?

Code: [Select]

#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

Christian_R


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

patg_



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  :smiley-mr-green:
J'en parle ici sur mon blog: http://breizhmakers.over-blog.com/article-un-peu-d-animation-ou-le-scrolling-a-base-de-max7219-105669349.html


bypbop

Merci à tous,

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

Code: [Select]

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


Pourtant cela fait bien 8x8 ...

Cordialement,
bypbop

patg_

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

bypbop

oupss désolé :

Code: [Select]

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


Cordialement,
bypbop

patg_

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

Code: [Select]
B11111111,
);


devrait être

Code: [Select]
B11111111
);


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

bypbop

lol jsuis nul ;-)
un grand merci.

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

Cordialement,
bypbop

patg_

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.

bypbop

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 :

Code: [Select]

#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

bypbop

Par contre sur le Y cela marche bien

Code: [Select]

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

Christian_R

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.
Christian

bypbop

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

bypbop

#13
Dec 27, 2012, 10:30 pm Last Edit: Dec 27, 2012, 10:46 pm by bypbop Reason: 1
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

Code: [Select]

#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

Go Up