#include <MD_Parola.h> // inclure la bibliothèque MajicDesigns Parola
#include <MD_MAX72xx.h> // inclure la bibliothèque de matrices LED MajicDesigns MAX72xx
#include <SPI.h> // inclure la bibliothèque Arduino SPI
#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW
const int DATA_PIN = 11, CLK_PIN = 13; // DATA PIN et CLOCK PIN Communes aux 4 matrices
const int M1_CS = 12, M2_CS = 10, M3_CS = 9, M4_CS = 8; // CS (Chip Select) pour chaque matrice.
const int MAX_DEVICES = 10; //nombre d'appareils que nous avons dans la chaîne et l'interface matérielle
// MATÉRIEL SPI
MD_Parola Matrice_1 = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, M1_CS, MAX_DEVICES); // top
MD_Parola Matrice_2 = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, M2_CS, MAX_DEVICES); // top
MD_Parola Matrice_3 = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, M3_CS, MAX_DEVICES); // top
MD_Parola Matrice_4 = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, M4_CS, 11); // top
static uint8_t zone = 0; // Mode d'affichage actuel
void setup() {
Matrice_1.begin(2); Matrice_2.begin(3);
Matrice_3.begin(5); Matrice_4.begin();
// définir 2 zones de la matrice 1
Matrice_1.setZone(0, 0, 4); // zone 0, chaine 0 à 4
Matrice_1.setZone(1, 5, 9); // zone 1, chaine 5 à 9
// définir 3 zones de la matrice 2
Matrice_2.setZone(0, 0, 2); // zone 0, chaine 0 à 2
Matrice_2.setZone(1, 3, 6); // zone 1, chaine 3 à 6
Matrice_2.setZone(2, 7, 9); // zone 2, chaine 3 à 6
// définir 5 zones de la matrice 3
Matrice_3.setZone(0, 0, 1); // zone 0, chaine 0 à 1
Matrice_3.setZone(1, 2, 3); // zone 1, chaine 2 à 3
Matrice_3.setZone(2, 4, 5); // zone 2, chaine 4 à 5
Matrice_3.setZone(3, 6, 7); // zone 3, chaine 6 à 7
Matrice_3.setZone(4, 8, 9); // zone 4, chaine 8 à 9
}
void loop() {
AfficheMatrice_1();
AfficheMatrice_2();
AfficheMatrice_3();
AfficheMatrice_4();
}
void AfficheMatrice_1() {
Matrice_1.displayAnimate();
if (Matrice_1.getZoneStatus(1) && Matrice_1.getZoneStatus(0)) {
Matrice_1.setInvert(0, true);
Matrice_1.displayZoneText(0, // Zone ciblée
"Zone 0", // texte affiché
PA_CENTER, // alignement
25, // vitesse in/out
1500, // pause
PA_SCROLL_RIGHT, // effet in
PA_SCROLL_RIGHT); // effet out
Matrice_1.displayZoneText(1,// Zone ciblée
"Zone 1 ", // texte affiché
PA_CENTER, // alignement
25, // vitesse in/out
1500, // pause
PA_SCROLL_LEFT, // effet in
PA_SCROLL_LEFT); // effet out
Matrice_1.displayReset();
}
}
void AfficheMatrice_2() {
Matrice_2.displayAnimate();
if (Matrice_2.getZoneStatus(0) &&
Matrice_2.getZoneStatus(1) &&
Matrice_2.getZoneStatus(2)) {
Matrice_2.setInvert(1, true);
Matrice_2.displayZoneText(0, // Zone ciblée
"Z 0", // texte affiché
PA_CENTER, // alignement
25, // vitesse in/out
2500, // pause
PA_SCROLL_UP, // effet in
PA_SCROLL_UP); // effet out
Matrice_2.displayZoneText(1,// Zone ciblée
"Z 1", // texte affiché
PA_CENTER, // alignement
25, // vitesse in/out
2500, // pause
PA_SCROLL_UP, // effet in
PA_SCROLL_UP); // effet out
Matrice_2.displayZoneText(2,// Zone ciblée
"Z 2", // texte affiché
PA_CENTER, // alignement
50, // vitesse in/out
2500, // pause
PA_SCROLL_UP, // effet in
PA_SCROLL_UP); // effet out
Matrice_2.displayReset();
}
}
void AfficheMatrice_3() {
Matrice_3.displayAnimate();
char texte2[6][3] = {"Z0", "Z1", "Z2", "Z3", "Z4", "Z5"};
if (Matrice_3.getZoneStatus(zone)) {
Matrice_3.displayReset(zone);
Matrice_3.setInvert(0, true);
Matrice_3.setInvert(2, true);
Matrice_3.setInvert(4, true);
Matrice_3.displayZoneText(zone, // zone ciblée
// "|",
texte2[zone],
//buffer[zone], // No. de la zone
PA_CENTER, // alignement
50, // vitesse d'animation
2500, // délais d'affichage
PA_SCROLL_UP, // animation entrée
PA_SCROLL_UP //animation sortie
);
}
zone++; if (zone >= 5)zone = 0;
}
void AfficheMatrice_4() {
Matrice_4.displayAnimate();
char * texte3 ="Matrice 1 zone";
if (Matrice_4.getZoneStatus(zone)) {
Matrice_4.displayReset(zone);
Matrice_4.setInvert(0, true);
Matrice_4.displayZoneText(zone, // zone ciblée
// "|",
texte3,
//buffer[zone], // No. de la zone
PA_CENTER, // alignement
50, // vitesse d'animation
2500, // délais d'affichage
PA_SCROLL_UP, // animation entrée
PA_SCROLL_UP //animation sortie
);
}
zone++; if (zone >= 10)zone = 0;
}