Bonjour xfpd,
Voici le code, avec de nombreuses zones en commentaire en vue d'évolutions futures.
Comme précisé, cela fonctionne bien avec la mini matrice 8x8; et fonctionne mal, avec la matrice externe ( leds plus ou moins allumé, incohérence des allumages et extinction...) .
Mes questions sont :
? peut-on faire ce que j'ai fait?
? à priori, si ma platine externe est bien conçu avec les négatifs en colonnes et les positifs en lignes, est-ce que la platine MAX7912 permet de transposer mini platine 8x8 vers une platine externe?
//2016.12.9
//We always have to include the library
#include "LedControl.h"
// déclaration des variables
int k=1;
int u=10; //nbre de boucle pour vagues drapeau
/* Now we need a LedControl to work with.
***** These pin numbers will probably not work with your hardware *****
pin 12 is connected to the DataIn
pin 11 is connected to LOAD(CS)
pin 10 is connected to the CLK
We have only a single MAX72XX.
*/
LedControl lc=LedControl(12,10,11,1);
/* we always wait a bit between updates of the display */
unsigned long delaytime1=600;
unsigned long delaytime2=300;
unsigned long delaytime3=300;
unsigned long delaytime4=200;
unsigned long delaytime5=1000;
void setup() {
/*
le MAX72XX est en mode faible consommation avant démarrage,
Il est nécessaire de l'activer
*/
lc.shutdown(0,false);
/* Set the brightness to a medium values */
lc.setIntensity(0,1);
/* and clear the display */
lc.clearDisplay(0);
}
/* paramétrage des lettres du mot THIES pour les faire apparaitre sur la matrice leds/jets. */
void writeTHIESOnMatrix() {
/* definition des lettres pour la matrice leds/jets */
byte T[5]={B00111110,B00001000,B00001000,B00001000,B00001000};
byte H[5]={B00100010,B00100010,B00111110,B00100010,B00100010};
byte I[5]={B00111110,B00001000,B00001000,B00001000,B00111110};
byte E[5]={B00111110,B00100000,B00111110,B00100000,B00111110};
byte S[5]={B00011110,B00100000,B00011100,B00000010,B00111100};
byte N[5]={B00000000,B00000000,B00001000,B00000000,B00000000}; //byte leds/jets neutre
/* Visualisation lettre/jet par lettre/jet avec un délai réglable "delaytime1" */
lc.setRow(0,0,T[0]); lc.setRow(0,1,T[1]); lc.setRow(0,2,T[2]); lc.setRow(0,3,T[3]); lc.setRow(0,4,T[4]);
delay(delaytime1);
lc.setRow(0,0,H[0]); lc.setRow(0,1,H[1]); lc.setRow(0,2,H[2]); lc.setRow(0,3,H[3]); lc.setRow(0,4,H[4]);
delay(delaytime1);
lc.setRow(0,0,I[0]); lc.setRow(0,1,I[1]); lc.setRow(0,2,I[2]); lc.setRow(0,3,I[3]); lc.setRow(0,4,I[4]);
delay(delaytime1);
lc.setRow(0,0,E[0]); lc.setRow(0,1,E[1]); lc.setRow(0,2,E[2]); lc.setRow(0,3,E[3]); lc.setRow(0,4,E[4]);
delay(delaytime1);
lc.setRow(0,0,S[0]); lc.setRow(0,1,S[1]); lc.setRow(0,2,S[2]); lc.setRow(0,3,S[3]); lc.setRow(0,4,S[4]);
delay(delaytime1);
/* mise à zero des jets/leds*/
lc.setRow(0,0,N[0]); lc.setRow(0,1,N[1]); lc.setRow(0,2,N[2]); lc.setRow(0,3,N[3]); lc.setRow(0,4,N[4]);
delay(delaytime5);
}
void global() {
/* definition des états neutre ou allumé pour la matrice leds/jets */
byte N[5]={B00000000,B00000000,B00001000,B00000000,B00000000}; //byte leds/jets neutre
byte A[5]={B11111111,B11111111,B11111111,B11111111,B11111111}; //byte leds/jets actif
/*byte C1[5]={B10000000,B10000000,B10000000,B10000000,B10000000}; //byte leds/jets ? à définir
byte C2[5]={B01000000,B01000000,B01000000,B01000000,B01000000}; //byte leds/jets ? à définir
byte C3[5]={B00100000,B00100000,B00100000,B00100000,B00100000}; //byte leds/jets ? à définir
byte C4[5]={B00010000,B00010000,B00010000,B00010000,B00010000}; //byte leds/jets ? à définir
byte C5[5]={B00001000,B00001000,B00001000,B00001000,B00001000}; //byte leds/jets ? à définir
byte C6[5]={B00000100,B00000100,B00000100,B00000100,B00000100}; //byte leds/jets ? à définir
byte C7[5]={B00000010,B00000010,B00000010,B00000010,B00000010}; //byte leds/jets ? à définir
byte C8[5]={B00000001,B00000001,B00000001,B00000001,B00000001}; //byte leds/jets ? à définir
*/
/* display leds/jets en totalité on/off/on/off etc*/
for ( int k=0;k<6;k++ ) {
lc.setRow(0,0,N[0]); lc.setRow(0,1,N[1]); lc.setRow(0,2,N[2]); lc.setRow(0,3,N[3]); lc.setRow(0,4,N[4]);
delay(delaytime3); {
lc.setRow(0,0,A[0]); lc.setRow(0,1,A[1]); lc.setRow(0,2,A[2]); lc.setRow(0,3,A[3]); lc.setRow(0,4,A[4]);
delay(delaytime3);
}
}
/* mise à zero des jets/leds*/
lc.setRow(0,0,N[0]); lc.setRow(0,1,N[1]); lc.setRow(0,2,N[2]); lc.setRow(0,3,N[3]); lc.setRow(0,4,N[4]);
delay(delaytime5);
}
void rows() // programme elegoo
{
for(int row=0;row<5;row++) {
delay(delaytime2);
lc.setRow(0,row,B10100000);
delay(delaytime2);
lc.setRow(0,row,(byte)0);
for(int i=0;i<row;i++) {
delay(delaytime2);
lc.setRow(0,row,B10100000);
delay(delaytime2);
lc.setRow(0,row,(byte)0);
}
}
}
/*
This function lights up a some Leds in a column.
The pattern will be repeated on every column.
The pattern will blink along with the column-number.
column number 4 (index==3) will blink 4 times etc.
*/
void columns() // programme elegoo
{
for(int col=0;col<8;col++) {
delay(delaytime2);
lc.setColumn(0,col,B00100000);
delay(delaytime2);
lc.setColumn(0,col,(byte)0);
for(int i=0;i<col;i++) {
delay(delaytime2);
lc.setColumn(0,col,B00100000);
delay(delaytime2);
lc.setColumn(0,col,(byte)0);
}
}
}//www.elegoo.com
/*
This function will light up every Led on the matrix.
The led will blink along with the row-number.
row number 4 (index==3) will blink 4 times etc.
*/
void single() // programme elegoo
{
for(int row=0;row<5;row++) {
for(int col=0;col<8;col++) {
delay(delaytime2);
lc.setLed(0,row,col,true);
delay(delaytime2);
for(int i=0;i<col;i++) {
lc.setLed(0,row,col,false);
delay(delaytime2);
lc.setLed(0,row,col,true);
delay(delaytime2);
}
}
}
}
/* definition des états du drapeau pour la matrice leds/jets */
/* display leds/jets en totalité drapeau*/
void drapeau() {
byte B[5]={B10000000,B10000000,B10000000,B10000000,B10000000}; // pour display hampe
/* definition des colonnes pour la matrice drapeau leds/jets ; VAGUE LARGE */
byte V1[5]={B10110011,B10110011,B10110011,B10110011,B10110011};
byte V2[5]={B11011001,B11011001,B11011001,B11011001,B11011001};
byte V3[5]={B11101100,B11101100,B11101100,B11101100,B11101100};
byte V4[5]={B10110110,B10110110,B10110110,B10110110,B10110110};
byte V5[5]={B10011011,B10011011,B10011011,B10011011,B10011011};
byte V6[5]={B11001101,B11001101,B11001101,B11001101,B11001101};
byte V7[5]={B11100110,B11100110,B11100110,B11100110,B11100110};
/* definition des colonnes pour la matrice drapeau leds/jets ; VAGUE FINE
byte V1[5]={B10100010,B10100010,B10100010,B10100010,B10100010};
byte V2[5]={B10010001,B10010001,B10010001,B10010001,B10010001};
byte V3[5]={B11001000,B11001000,B11001000,B11001000,B11001000};
byte V4[5]={B10100100,B10100100,B10100100,B10100100,B10100100};
byte V5[5]={B10010010,B10010010,B10010010,B10010010,B10010010};
byte V6[5]={B11001001,B11001001,B11001001,B11001001,B11001001};
byte V7[5]={B10000000,B10000000,B10001000,B10000000,B10000000}; */
byte N[5]={B00000000,B00000000,B00001000,B00000000,B00000000}; //byte leds/jets neutre
/* display leds/jets en totalité drapeau ondulent etc*/ /* première colonne la hampe du drapeau*/
{ lc.setRow(0,0,B[0]); lc.setRow(0,1,B[1]); lc.setRow(0,2,B[2]); lc.setRow(0,3,B[3]); lc.setRow(0,4,B[4]);}
delay(delaytime5);
for ( int j=0;j<u;j++ ) {
lc.setRow(0,0,V1[0]); lc.setRow(0,1,V1[1]); lc.setRow(0,2,V1[2]); lc.setRow(0,3,V1[3]); lc.setRow(0,4,V1[4]);
delay(delaytime4);
lc.setRow(0,0,V2[0]); lc.setRow(0,1,V2[1]); lc.setRow(0,2,V2[2]); lc.setRow(0,3,V2[3]); lc.setRow(0,4,V2[4]);
delay(delaytime4);
lc.setRow(0,0,V3[0]); lc.setRow(0,1,V3[1]); lc.setRow(0,2,V3[2]); lc.setRow(0,3,V3[3]); lc.setRow(0,4,V3[4]);
delay(delaytime4);
lc.setRow(0,0,V4[0]); lc.setRow(0,1,V4[1]); lc.setRow(0,2,V4[2]); lc.setRow(0,3,V4[3]); lc.setRow(0,4,V4[4]);
delay(delaytime4);
lc.setRow(0,0,V5[0]); lc.setRow(0,1,V5[1]); lc.setRow(0,2,V5[2]); lc.setRow(0,3,V5[3]); lc.setRow(0,4,V5[4]);
delay(delaytime4);
lc.setRow(0,0,V6[0]); lc.setRow(0,1,V6[1]); lc.setRow(0,2,V6[2]); lc.setRow(0,3,V6[3]); lc.setRow(0,4,V6[4]);
delay(delaytime4);
lc.setRow(0,0,V7[0]); lc.setRow(0,1,V7[1]); lc.setRow(0,2,V7[2]); lc.setRow(0,3,V7[3]); lc.setRow(0,4,V7[4]);
delay(delaytime4);
}
/* mise à zero des jets/leds*/
lc.setRow(0,0,N[0]); lc.setRow(0,1,N[1]); lc.setRow(0,2,N[2]); lc.setRow(0,3,N[3]); lc.setRow(0,4,N[4]);
delay(delaytime5);
// programme elegoo
/*for(int col=0;col<8;col++) {
for(int row=0;row<5;row++) {
delay(delaytime2);
lc.setLed(0,row,col,false);
delay(delaytime2);
/*for(int i=0;i<col;i++) {
lc.setLed(0,row,col,true);
delay(delaytime2);
lc.setLed(0,row,col,false);
delay(delaytime2);
}
}
}*/
}
void loop() {
writeTHIESOnMatrix();
global();
//rows(); // programme elegoo
//columns(); // programme elegoo
//single(); // programme elegoo
drapeau();
}