Pages: [1]   Go Down
Author Topic: Led Matrice Arduino 8x8 Max7219  (Read 2021 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
#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
Logged

france
Offline Offline
God Member
*****
Karma: 15
Posts: 868
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Christian

Rennes
Offline Offline
Sr. Member
****
Karma: 1
Posts: 313
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci à tous,

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

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

Pourtant cela fait bien 8x8 ...

Cordialement,
bypbop
Logged

Rennes
Offline Offline
Sr. Member
****
Karma: 1
Posts: 313
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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


Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

oupss désolé :

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

Cordialement,
bypbop
Logged

Rennes
Offline Offline
Sr. Member
****
Karma: 1
Posts: 313
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Code:
B11111111,
);

devrait être

Code:
B11111111
);

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


Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Rennes
Offline Offline
Sr. Member
****
Karma: 1
Posts: 313
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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


Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
#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
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Par contre sur le Y cela marche bien

Code:
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
Logged

france
Offline Offline
God Member
*****
Karma: 15
Posts: 868
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Christian

Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
#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
« Last Edit: December 27, 2012, 04:46:26 pm by bypbop » Logged

Pages: [1]   Go Up
Jump to: