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

Mes Arduineries: http://breizhmakers.over-blog.com/

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...
Mes Arduineries: http://breizhmakers.over-blog.com/

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.
Mes Arduineries: http://breizhmakers.over-blog.com/

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.
Mes Arduineries: http://breizhmakers.over-blog.com/

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