#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
#include <Wire.h>
#include <RTClib.h>
// Défininir le Type d'appareils que nous utilisons.
#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW
// Définir le nombre d'appareils que nous avons dans la chaîne et l'interface matérielle
const int MAX_DEVICES = 16;
// Définir les connexions matériels
const int CLK_PIN = 13, DATA_PIN = 11, CS_PIN_M1 = 10, CS_PIN_M2 = 9;
// Assigner un nom aux 2 matrices et définir leurs paramètres.
MD_Parola matrice_1 = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN_M1, MAX_DEVICES);
MD_Parola matrice_2 = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN_M2, MAX_DEVICES);
// Assigner le nom "rtc" au module DS1307
RTC_DS1307 rtc; // Module RTC (Real Time Clock)
// Variables globales
char Jour[7][12] = {"Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"};
char Mois[13][15] = {"", "Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin",
"Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre"
};
char Horloge[9], LaDate[20], LeJour[13];
void setup(void)
{
// démarrage des modules
matrice_1.begin(2); matrice_2.begin(); rtc.begin();
// Définir les limites des 2 zones
matrice_1.setZone(0, 0, 5); matrice_1.setZone(1, 6, 15);
// initialiser les lignes à afficher
matrice_1.displayZoneText(0, Horloge, PA_LEFT, 5, 0, PA_PRINT, PA_NO_EFFECT);
matrice_1.displayZoneText(1, LeJour, PA_CENTER, 5, 0, PA_PRINT, PA_NO_EFFECT);
}
void loop(void) {
DateTime now = rtc.now();
// matrice 2
sprintf(LaDate, "Le %2d %s %d", now.day(), Mois[now.month()], now.year());
matrice_2.setTextAlignment(PA_CENTER); //alignement au centre de la matrice 2
matrice_2.print(LaDate); // affiche la date au complet
// Affiche le jour de la semaine et l'heure actuelle sur la matrice 1
sprintf(LeJour, "%9s", Jour[now.dayOfTheWeek()]);
sprintf(Horloge, "%02d:%02d:%02d", now.hour(), now.minute(), now.second());
// Indexe les 2 zones de la matrice 1
if (matrice_1.displayAnimate()) for (uint8_t i = 0; i < 2; i++)
// lance l'affichage
if (matrice_1.getZoneStatus(i)) matrice_1.displayReset(i);
}
GND
+5V