/*
voir le site : https://plaisirarduino.fr/max-7219/ pour mieux comprendre le Max7219
Résumé : Le Max7219 à 14 registres parmi lesquels on px citer: Digit0,...Digit7,
Decode Mode, Intensity, Scan Limit, Shutdown, Display Test --> il faut bien les comprendre
pour pouvoir controler le Max77219
*/
//Digit0,...Digit7 : Ces huit registres permettent d’affecter une donnée à chaque Digit
//Decode Mode: Il permet d'activer le code "B font".Pour comprendre le code B, il faut tout d’abord savoir que c'est une fonction interne au MAX 7219 qui décode les données d'affichage selon un tableau prédéfini sur le site : https://plaisirarduino.fr/max-7219/ .
//Intensity: Il permet de définir l'intensité lumineuse de l'afficheur. Il peut avoir seize (16) données, sur quatre (4) bits, possible de "0xX0" à "0xXF" (hexa.) allant du plus faible éclairage au plus fort.
//Scan Limit:Il a pour rôle de définir le nombre de digits que l'on souhaite exploiter de digit0 à digit8
//Shutdown: Il permet d'allumer ou d’éteindre l'afficheur. A zéro (0) "0xX0" l'afficheur est éteint.
//Display Test: Il permet de tester l'afficheur en activant toutes les leds de l'afficheur. En fonction du tableau dix (10) comme "shutdown"
/*
Utilisation de LedControl
LedControl est une librairie simple qui offre des fonctions simplifiées de transfert
de données vers le MAX7219 rendant ainsi la programmation d'un afficheur sept segments
ou d'une matrice plus souple et conviviale. Elle utilise des fonctions sous forme de
texte bien documenté et qui permettent de réaliser de nombreuses choses.
*/
#include "LedControl.h"
LedControl lc=LedControl(7,5,6,1);
/*
Ci-dessus LedControl est déclaré par une instance d'un objet et appelé "LedControl"
dans notre programme. Cette fonction prend trois (3) paramètres,
définis par le câblage de la platine Arduino et un (1),
la dernière valeur correspond au nombre de contrôleur présent sur le bus.
*/
/*
Le premier paramètre définit la broche 6 de l'Arduino comme étant LOAD CS
Le deuxième paramètre définit la broche 5 de l'Arduino comme étant CLK
Le troisième paramètre définit la broche 7 de l'Arduino comme étant le MOSI
Le dernier paramètre correspond au nombre de MAX7219 utilisé. Ici un (1).
*/
unsigned long delaytime=1000;
void setup() {
lc.shutdown(0,false);//Cette fonction permet d'allumer ou d’éteindre le MAX 7219. Si la valeur est false, le circuit fonctionne normalement et à l'inverse, true le circuit est éteint.
lc.setIntensity(0,8);//cette fonction permet de définir l'intensité lumineuse de l'afficheur en 16 valeurs différentes; 15 étant notamment le maximum.
lc.clearDisplay(0);//Cette fonction éteint l'afficheur et supprime toutes les données précédentes.
// Autres fonctions de bases:
/*
La fonction setDigit();
la fonction setLed
la fonction setColumn
*/
}
void writeArduinoOnMatrix() {
byte a[8]={
B00000000,
B00000000,
B00100100,
B00100100,
B00000000,
B01000010,
B00111100,
B00000000};
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]);
lc.setRow(0,5,a[5]);
lc.setRow(0,6,a[6]);
lc.setRow(0,7,a[7]);
/*
La fonction setRow:
Elle prend trois paramètres:
le premier est l'adresse de l'afficheur par défaut toujours à 0.
le second est le digit en question qui prendre pour valeur de 0 à 7.
le troisième est une donnée en octet "B01110111" ou en hexadécimal "0x77".
Ce troisième paramètre a pour avantage d'afficher tous les segments que l'on souhaite
sur un digit de manière distincte.
*/
//Info: L'usage de la matrice 1588BS inverse mes colonnes et mes lignes.
}
void loop() {
writeArduinoOnMatrix();
}
/* A consulter !!!
#include <LedControl.h>
LedControl LDCONT=LedControl(12,10,11,1);
unsigned long delaytime1 = 500 ;
unsigned long delaytime2 = 50 ;
void setup() {
LDCONT.shutdown(0,false);
LDCONT.setIntensity(0,8);
LDCONT.clearDisplay(0);
}
void loop() {
writeArduinoOnMatrix();
}
void writeArduinoOnMatrix(){
byte a[5]={B01111110,B10001000,B10001000,B10001000,B01111110};
byte r[5]={B00010000,B00100000,B00100000,B00010000,B00111110};
byte d[5]={B11111110,B00010010,B00100010,B00100010,B00011100};
byte u[5]={B00111110,B00000100,B00000010,B00000010,B00111110};
byte i[5]={B00000000,B00000010,B10111110,B00100010,B00000000};
byte n[5]={B00011110,B00000010,B00100000,B00010000,B00111110};
byte o[5]={B00011100,B00100010,B00100010,B00100010,B00011100};
LDCONT.setRow(0,0,a[0]);
LDCONT.setRow(0,1,a[1]);
LDCONT.setRow(0,2,a[2]);
LDCONT.setRow(0,3,a[3]);
LDCONT.setRow(0,4,a[4]);
delay(delaytime1);
LDCONT.setRow(0,0,r[0]);
LDCONT.setRow(0,1,r[1]);
LDCONT.setRow(0,2,r[2]);
LDCONT.setRow(0,3,r[3]);
LDCONT.setRow(0,4,r[4]);
delay(delaytime1);
LDCONT.setRow(0,0,d[0]);
LDCONT.setRow(0,1,d[1]);
LDCONT.setRow(0,2,d[2]);
LDCONT.setRow(0,3,d[3]);
LDCONT.setRow(0,4,d[4]);
delay(delaytime1);
LDCONT.setRow(0,0,u[0]);
LDCONT.setRow(0,1,u[1]);
LDCONT.setRow(0,2,u[2]);
LDCONT.setRow(0,3,u[3]);
LDCONT.setRow(0,4,u[4]);
delay(delaytime1);
LDCONT.setRow(0,0,n[0]);
LDCONT.setRow(0,1,n[1]);
LDCONT.setRow(0,2,n[2]);
LDCONT.setRow(0,3,n[3]);
LDCONT.setRow(0,4,n[4]);
delay(delaytime1);
LDCONT.setRow(0,0,o[0]);
LDCONT.setRow(0,1,o[1]);
LDCONT.setRow(0,2,o[2]);
LDCONT.setRow(0,3,o[3]);
LDCONT.setRow(0,4,o[4]);
delay(delaytime1);
}
*/