Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Arduino Nano Clock avec matrice LED 4x64 (nouvelle version)

Composants et fournitures

Arduino Nano R3
× 1
Matrice LED
× 1
Résistance photo
× 1
Planche à pain (générique)
× 1
DS3231
× 1

Applications et services en ligne

Arduino IDE

À propos de ce projet


La lecture d'un affichage d'horloge dans une pièce à plusieurs mètres nécessite un tel affichage matriciel à LED.

Ayant acheté à bon prix un écran 4 cellules, j'ai cherché sur Hackster les projets disponibles :il y en a plusieurs, pour Arduino Nano. Si vous voulez voir l'heure, les minutes et les secondes simultanément :seuls quelques projets fonctionnent, car vous avez besoin de chiffres plus petits que ceux largement disponibles avec 5x7 pixels par chiffre. Une option consiste à utiliser la bibliothèque MD_Parola, mais la taille du code est trop grande pour une simple horloge. L'autre option testée était la bibliothèque Max72xxPanel, mais elle est trop ancienne et appelle d'autres bibliothèques. Enfin, le projet est basé sur la bibliothèque d'interface de base MD_MAX722XX, incluse dans toutes les autres.

Les remarques de ce site, m'ont fait revoir les aspects matériels et le code.

- Il existe de nombreuses bibliothèques appelées DS3231. J'utilise celui-ci :http://www.rinkydinkelectronics.com/library.php?id=73

Prise en charge de la bibliothèque Arduino/chipKit pour l'horloge temps réel DS3231 I2CCopyright (C)2015 Rinky-Dink Electronics, Henning Karlsen. Tous droits réservés

- Premièrement :l'affichage matriciel à LED. Il existe plusieurs modèles sur le marché, il est donc très probable que l'écran affiche des choses étranges après avoir téléchargé ce code. Solution :téléchargez cet exemple depuis la bibliothèque « MD_MAX72xx_lib.h » :« MD_MAX72xx_HW_Mapper.ino » et recherchez votre modèle de matériel. Dans mon code, le modèle a été défini :#define HARDWARE_TYPE MD_MAX72XX::ICSTATION_HW, mais cela peut ne pas fonctionner tant que vous n'avez pas défini le bon modèle !

- Les belles petites secondes ne se sont pas manifestées ces derniers temps ? Désormais (v2), les polices pour ces secondes sont incluses dans le code, il n'est donc pas nécessaire de modifier une autre bibliothèque.

- Une longue liste d'avertissements de compilation s'est produite en raison des mises à jour Arduino. Désormais, les mois sont dans un tableau de caractères à deux dimensions et n'utilisent plus de pointeur. Tous les autres avertissements proviennent de la bibliothèque DS3231.h, mais peuvent être ignorés.

- Les points clignotants ne sont plus que 2 points ! Les secondes précises sont affichées, en utilisant mes polices 3x5, après "hh:mm". De plus, les points de la colonne ":" clignotent presque deux fois par seconde, juste pour montrer qu'il est vivant !

- Répondre à une demande :l'heure est affichée pendant 53 secondes chaque minute et pendant les 7 dernières secondes sont affichées la date et la température.

- Le jour de la semaine peut également être affiché, si vous dé-commentez deux lignes dans la boucle(). Dans ce cas, vous préférerez peut-être réduire l'intervalle de 53 secondes à 51.

- Si vous préférez le format 12 heures, consultez l'une de mes anciennes réponses.

- L'heure RTC peut être réglée dans le moniteur série Arduino en écrivant dans la zone de saisie JJ/MM/AAAA hh:mm:ss (n'oubliez pas l'espace entre) et appuyez sur Entrée/Envoyer. Cela peut être fait chaque fois qu'un câble USB est connecté et que Serial Monitor est fonctionnel (COM et débit en bauds corrects).

Le nouveau code utilise 13558 octets (44 %) et 372 octets (18 %) pour les variables, il est donc un peu plus court !

La date est indiquée sous la forme "dd Mon" et la température ambiante en degrés. Celsius (estimé à l'aide du capteur interne RTC) est affiché sur une page séparée. La luminosité est contrôlée par une photo-résistance. Le code fonctionne cependant, même sans capteur de lumière.

Merci de votre intérêt, matérialisé par le bouton "respect" !

Code

  • ANCIENNE version - Horloge Arduino Nano Dot Matrix
  • Nouvelle version (v2) - Horloge Arduino Nano Dot Matrix
ANCIENNE version - Horloge Arduino Nano Dot MatrixArduino
Étant donné que de nombreuses bibliothèques ont changé depuis la version initiale, ce code est obsolète. Utiliser la nouvelle versionToutes les connexions sont décrites dans le code. Pour les petites polices, modifiez quelques lignes dans MD_MAX72xx_font.cpp, comme expliqué dans le code.
/* ATTENTION :Le code initial est désormais obsolète. Utilisez la nouvelle (version 2) * Horloge Arduino Nano DS3231 avec matrice LED 4x (8x8) SPI * * Logique Arduino Nano 5V - 32kB prog. espace * Outils : Carte :Arduino Nano ; Processeur :ATmega328P (Old Bootloader) !!* Matrice LED 4x (8x8) SPI avec connecteur sur le côté droit (dernier module)* https://www.banggood.com/MAX7219-Dot-Matrix-Module-4-in- 1-Display-For-Arduino-p-1072083.html?rmmds=myorder&cur_warehouse=CN* * CONNEXIONS :*>> LCD 4x64 -> Arduino Nano :(en utilisant Hardware SPI) :* 5V -> 5V broche* GND -> GND pin* CLK_PIN -> 13 // ou SCK* DATA_PIN -> 11 // ou MOSI* CS_PIN -> 10 // ou SS * *>> DS3231 RTC -> Arduino Nano:* SDA (DAT) -> A4* SCL ( CLK) -> A5 * Inspiré de :1) Horloge Arduino par AnthoTRONICS Dernière édition :22 mars 2019* mais sans MD_parola en raison de sa grande empreinte ! Nouvelle fonction getdate.* 2) Horloge numérique UNO la plus simple jamais réalisée par plouc68000 :* https://create.arduino.cc/projecthub/plouc68000/simplest-uno-digital-clock-ever-4613aa?ref=user&ref_id=680368&offset=1* 3) LEDDotMatrixClock.ino de Leonardo Sposina, mais ici sans "Max72xxPanel.h"* https://github.com/leonardosposina/arduino-led-dot-matrix-clock/blob/master/LEDDotMatrixClock/LEDDotMatrixClock.ino* Non utilisé Max72xxPanel.h, mais les chiffres de petite taille sont toujours utilisés. Code à faible encombrement ici.* Remplacer dans la bibliothèque MD_MAX72XX/src/MD_MAX72xx_font.cpp :* 1) #define USE_NEW_FONT 1* 2) les polices #148 ... 158 doivent être remplacées par des polices 3x5 :3, 248, 136, 248, / / 48 0 3, 144, 248, 128, // 49 1 3, 200, 168, 184, // 50 2 3, 136, 168, 248, // 51 3 3, 112, 72, 224, // 52 4 3, 184, 168, 232, // 53 5 3, 248, 168, 232, // 54 6 3, 8, 232, 24, // 55 7 3, 248, 168, 248, // 56 8 3 , 184, 168, 248, // 57 9 1, 80, // 58 :* * projet :13790 octets (44 %); variables 361 octets (17%)* Auteur :MVP https://www.hackster.io/MVP*/#include #include "DS3231.h"#include "MD_MAX72xx_lib.h"//#include " Font_Data.h"DS3231 rtc(SDA, SCL); // Octet d'horloge en temps réel LDR_PIN =A2; // Pin du capteur LDR#define MAX_DEVICES 4// Define pins#define CLK_PIN 13 // ou SCK#define DATA_PIN 11 // ou MOSI#define CS_PIN 10 // ou SS#define HARDWARE_TYPE MD_MAX72XX::ICSTATION_HW#define USE_NEW_FONT 1#define BUF_SIZE 20 // taille du tampon de texte#define CHAR_SPACING 1 // pixels entre les caractèreschar buf[BUF_SIZE], secs[4];uint8_t points;// Interface matérielle SPI // Max72xxPanel matrix =Max72xxPanel(CS_PIN, H_DISPLAYS, V_DISPLAYS);MD_MAX72XX matrix =MD_MAX72XX(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);const byte WAIT =100;const byte SPACER =1;byte FONT_WIDTH;bool timeset=false;void AdjustClock(String data) { byte _day =data.substring(0,2).toInt (); octet _mois =data.substring(3,5).toInt(); int _year =data.substring(6,10).toInt(); octet _heure =data.substring(11,13).toInt(); octet _min =data.substring(14,16).toInt(); octet _sec =data.substring(17,19).toInt(); rtc.setTime(_hour, _min, _sec); rtc.setDate(_jour, _mois, _année); Serial.println(F(">> Datetime définie avec succès !")); timeset=true;}byte ledintensitySelect(int light) { byte _value =0; if (lumière>=0 &&lumière <=127) { _value =12; } else if (light>=128 &&light <=319) { _value =3; } else if (lumière>=320 &&lumière <=512) { _value =0; } return _value;};void printText(uint8_t modStart, uint8_t modEnd, char *pMsg)// Imprime la chaîne de texte sur les modules de matrice LED spécifiés.// La zone de message est remplie de colonnes vides après l'impression.{ uint8_t state =0; uint8_t curLen; uint16_t showLen; uint8_t cBuf[FONT_WIDTH] ; int16_t col =((modEnd + 1) * COL_SIZE) - 1 ; matrice.contrôle(modStart, modEnd, MD_MAX72XX::UPDATE, MD_MAX72XX::OFF); do // machine à états finis pour imprimer les caractères dans l'espace disponible { switch(state) { case 0 :// Charger le prochain caractère de la table des polices // si nous avons atteint la fin du message, réinitialiser le pointeur de message if (*pMsg =='\0') { showLen =col - (modEnd * COL_SIZE); // caractères de remplissage state =2; Pause; } // récupère le caractère suivant du fichier de police showLen =matrix.getChar(*pMsg++, sizeof(cBuf)/sizeof(cBuf[0]), cBuf); CourLen =0 ; état++; // !! passer délibérément à l'état suivant pour commencer à afficher le cas 1 :// afficher la partie suivante du caractère matrix.setColumn(col--, cBuf[curLen++]); // fait avec le caractère de police, affiche maintenant l'espace entre les caractères if (curLen ==showLen) { showLen =CHAR_SPACING; état =2 ; } Pause; case 2 :// initialisation de l'état pour l'affichage des colonnes vides curLen =0; état++; // passer à travers le cas 3:// afficher l'espacement entre les caractères ou le remplissage de fin de message (colonnes vides) matrix.setColumn(col--, 0); curLen++; si (curLen ==showLen) état =0 ; Pause; par défaut :col =-1 ; // cela termine définitivement la boucle do } } while (col>=(modStart * COL_SIZE)); matrix.control(modStart, modEnd, MD_MAX72XX::UPDATE, MD_MAX72XX::ON);}void setup() { pinMode(LDR_PIN, INPUT_PULLUP); Serial.begin(9600); Serial.println(F(">> Horloge matricielle LED Arduino 32x8 !")); Serial.println(F(">> Utilisez le format  pour régler la date et l'heure de l'horloge !")); rtc.begin(); matrice.begin(); matrice.clear(); FONT_WIDTH=5 + SPACER ; // La largeur de la police est de 5 pixels matrix.control(MD_MAX72XX::INTENSITY, 2);; // Utilisez une valeur comprise entre 0 et 15 pour la luminosité}void getDate()// Configuration de la date :code pour lire la date de l'horloge{ char* mois[]={"Jan","Fev","Mar","Apr", "Mai","Juin","Juil","Aug","Sep","Oct","Nov","Dec"} ; Chaîne dts =rtc.getDateStr(); // Récupère la chaîne dd/mm/yyyy String dds=dts.substring(0,2); // Extraire la chaîne de date mms=dts.substring(3,5); // Extrait le mois int mm=mms.toInt(); // Convertir en numéro de mois dds.concat(" "); dds.concat(String(months[mm-1])); // Reconstruire la chaîne de date en tant que "dd Mmm" dds.toCharArray(buf,sizeof(buf)); // return buffer}void getHour()// Date Setup :Code pour lire la date de l'horloge{ String dts =rtc.getTimeStr(); // Récupère hh:mm:ss string String hhs=dts.substring(0,2); // Extrait l'heure int hh=hhs.toInt(); // Convertir en nombre if (hh <10) points=7; if(hh> 19 &&hh <24) points=13; si ((hh> 9 &&hh <20) || (hh ==21)) points=11; si (hh ==1) points=5 ; si (hh ==11) points=10 ; //Chaîne outmsg=dts.substring(0,5); // Extraire hh:mm (facultatif) String outmsg=String(hh); // Extraire h si h<10 outmsg.concat(":"); // ajouter :outmsg.concat(dts.substring(3,5)); // ajoute mm outmsg.toCharArray(buf,BUF_SIZE);}void showsec(){ String dts =rtc.getTimeStr(); // Récupère hh:mm:ss string String scs1=dts.substring(6,7); Chaîne scs2=dts.substring(7) ; car sc1=148+scs1.toInt(); // Convertir en index de char char sc2=148+scs2.toInt(); // Convertir en index de char matrix.setChar(6,sc1) ; matrix.setChar(2,sc2);}void loop() { octet ledIntensity =ledintensitySelect(analogRead(LDR_PIN)); matrix.control(MD_MAX72XX::INTENSITY, ledIntensity);; // Utiliser une valeur entre 0 et 15 pour la luminosité // Afficher hh:mm from buf getHour(); printText(0,MAX_DEVICES-1,buf); retard (ATTENDRE); // Clignotement de deux points :for (uint8_t i=0; i<8; i++){ matrix.setColumn(MAX_DEVICES*8-dots,36); montresec(); retard (250); matrice.setColumn(MAX_DEVICES*8-dots,0) ; montresec(); retard (250); } // Sortir en faisant défiler vers le haut :for (uint8_t i=0; i<8; i++){ matrix.transform(MD_MAX72XX::TSU); délai(2*ATTENDRE); retard (ATTENDRE); } avoir un rendez-vous(); printText(0,MAX_DEVICES-1,buf); retard (20 * ATTENDRE); int temp =rtc.getTemp(); temp=temp-1; // Offset -1 C String outmsg=String(temp); outmsg.concat("C"); outmsg.toCharArray(buf,BUF_SIZE); printText(0,MAX_DEVICES-1,buf); retard (20 * ATTENDRE); // Réglage de l'heure dans RTC :if (Serial.available()> 0 &×et==false) { AdjustClock(Serial.readString()); }}
Nouvelle version (v2) - Horloge Arduino Nano Dot MatrixArduino
Mise à jour conformément aux nouvelles bibliothèques./* Horloge Arduino Nano DS3231 avec matrice de LED 4x (8x8) SPI * Version 2 - mise à jour 15/05/2-21 * Logique Arduino Nano 5V - 32kB prog. espace * Outils : Carte :Arduino Nano ; Processeur :ATmega328P (Old Bootloader) !!* Matrice LED 4x (8x8) SPI avec connecteur sur le côté droit (dernier module)* https://www.banggood.com/MAX7219-Dot-Matrix-Module-4-in- 1-Display-For-Arduino-p-1072083.html?rmmds=myorder&cur_warehouse=CN* * CONNEXIONS :*>> LCD 4x64 -> Arduino Nano :(en utilisant Hardware SPI) :* 5V -> 5V broche* GND -> GND pin* CLK_PIN -> 13 // ou SCK* DATA_PIN -> 11 // ou MOSI* CS_PIN -> 10 // ou SS * *>> DS3231 RTC -> Arduino Nano:* SDA (DAT) -> A4* SCL ( CLK) -> A5 * Inspiré de :1) Horloge Arduino par AnthoTRONICS Dernière édition :22 mars 2019* mais sans MD_parola en raison de sa grande empreinte ! Nouvelle fonction getdate.* 2) Horloge numérique UNO la plus simple jamais réalisée par plouc68000 :* https://create.arduino.cc/projecthub/plouc68000/simplest-uno-digital-clock-ever-4613aa?ref=user&ref_id=680368&offset=1* 3) LEDDotMatrixClock.ino de Leonardo Sposina, mais ici sans "Max72xxPanel.h"* https://github.com/leonardosposina/arduino-led-dot-matrix-clock/blob/master/LEDDotMatrixClock/LEDDotMatrixClock.ino* Non utilisé Max72xxPanel.h, mais les chiffres de petite taille sont toujours utilisés. Code à faible encombrement ici.* * projet :113558 octets (44 %); variables 372 octets (17%)* Auteur :MVP https://www.hackster.io/MVP*/#include #include "DS3231.h"#include "MD_MAX72xx_lib.h"//#include " Font_Data.h"DS3231 rtc(SDA, SCL); // Octet d'horloge en temps réel LDR_PIN =A2; // Pin du capteur LDR#define MAX_DEVICES 4// Define pins#define CLK_PIN 13 // ou SCK#define DATA_PIN 11 // ou MOSI#define CS_PIN 10 // ou SS// Définissez ci-dessous le modèle matériel de votre matrice LED://# define HARDWARE_TYPE MD_MAX72XX::ICSTATION_HW#define HARDWARE_TYPE MD_MAX72XX::FC16_HW#define USE_NEW_FONT 1#define BUF_SIZE 20 // taille du tampon de texte#define CHAR_SPACING 1 // pixels entre les caractèreschar buf[BUF_[4];t8, secs ss, dots;// Définition des petites polices :uint8_t Font3x5 [ 10 ][ 3 ]={ { 248, 136, 248}, // 48 0 {144, 248, 128}, // 49 1 {200, 168 , 184}, // 50 2 {136, 168, 248}, // 51 3 {112, 72, 224}, // 52 4 {184, 168, 232}, // 53 5 {248, 168, 232 }, // 54 6 {8, 232, 24}, // 55 7 {248, 168, 248}, // 56 8 {184, 168, 248}} ; // 57 mois à 9 caractères[12][4]={"Jan","Fév","Mar","Avr","Mai","Juin","Jul","Aug","Sep"," Oct","Nov","Dec"};char* wday;// Interface matérielle SPI// Matrice Max72xxPanel =Max72xxPanel(CS_PIN, H_DISPLAYS, V_DISPLAYS);Matrice MD_MAX72XX =MD_MAX72XX(HARDWARE_TYPE, CS_PIN, MAX_DEVICES); octet const WAIT =100;const byte SPACER =1;byte FONT_WIDTH;bool timeset=false;void AdjustClock(String data) { byte _day =data.substring(0,2).toInt(); octet _mois =data.substring(3,5).toInt(); int _year =data.substring(6,10).toInt(); octet _heure =data.substring(11,13).toInt(); octet _min =data.substring(14,16).toInt(); octet _sec =data.substring(17,19).toInt(); rtc.setTime(_hour, _min, _sec); rtc.setDate(_jour, _mois, _année); Serial.println(F(">> Datetime définie avec succès !")); timeset=true;}byte ledintensitySelect(int light) { byte _value =0; if (lumière>=0 &&lumière <=127) { _value =12; } else if (light>=128 &&light <=319) { _value =3; } else if (lumière>=320 &&lumière <=512) { _value =0; } return _value;};void printText(uint8_t modStart, uint8_t modEnd, char *pMsg)// Imprime la chaîne de texte sur les modules de matrice LED spécifiés.// La zone de message est remplie de colonnes vides après l'impression.{ uint8_t state =0; uint8_t curLen; uint16_t showLen; uint8_t cBuf[FONT_WIDTH] ; int16_t col =((modEnd + 1) * COL_SIZE) - 1 ; matrice.contrôle(modStart, modEnd, MD_MAX72XX::UPDATE, MD_MAX72XX::OFF); do // machine à états finis pour imprimer les caractères dans l'espace disponible { switch(state) { case 0 :// Charger le prochain caractère de la table des polices // si nous avons atteint la fin du message, réinitialiser le pointeur de message if (*pMsg =='\0') { showLen =col - (modEnd * COL_SIZE); // caractères de remplissage state =2; Pause; } // récupère le caractère suivant du fichier de police showLen =matrix.getChar(*pMsg++, sizeof(cBuf)/sizeof(cBuf[0]), cBuf); CourLen =0 ; état++; // !! passer délibérément à l'état suivant pour commencer à afficher le cas 1 :// afficher la partie suivante du caractère matrix.setColumn(col--, cBuf[curLen++]); // fait avec le caractère de police, affiche maintenant l'espace entre les caractères if (curLen ==showLen) { showLen =CHAR_SPACING; état =2 ; } Pause; case 2 :// initialisation de l'état pour l'affichage des colonnes vides curLen =0; état++; // passer à travers le cas 3:// afficher l'espacement entre les caractères ou le remplissage de fin de message (colonnes vides) matrix.setColumn(col--, 0); curLen++; si (curLen ==showLen) état =0 ; Pause; par défaut :col =-1 ; // cela termine définitivement la boucle do } } while (col>=(modStart * COL_SIZE)); matrix.control(modStart, modEnd, MD_MAX72XX::UPDATE, MD_MAX72XX::ON);}void setup() { pinMode(LDR_PIN, INPUT_PULLUP); Serial.begin(9600); Serial.println(F(">> Horloge matricielle LED Arduino 32x8 !")); Serial.println(F(">> Utilisez le format pour régler la date et l'heure de l'horloge !")); rtc.begin(); matrice.begin(); matrice.clear(); FONT_WIDTH=5 + SPACER ; // La largeur de la police est de 5 pixels matrix.control(MD_MAX72XX::INTENSITY, 2);; // Utilise une valeur entre 0 et 15 pour la luminosité rtc.setDOW(); // Obligatoire pour un nouveau RTC}void getDate()// Configuration de la date :code pour lire la date de l'horloge{ String dts =rtc.getDateStr(); // Récupère la chaîne dd/mm/yyyy String dds=dts.substring(0,2); // Extraire la chaîne de date mms=dts.substring(3,5); // Extrait le mois int mm=mms.toInt(); // Convertir en numéro de mois dds.concat(" "); dds.concat(String(months[mm-1])); // Reconstruire la chaîne de date en tant que "dd Mmm" dds.toCharArray(buf,sizeof(buf)); // tampon de retour wday =rtc.getDOWStr(2);}void getHour()// Configuration de la date :code pour lire la date de l'horloge{ String dts =rtc.getTimeStr(); // Récupère hh:mm:ss string String hhs=dts.substring(0,2); // Extraire la chaîne de l'heure mms=dts.substring(3,5); // Extraire les minutes hh=hhs.toInt(); // Convertir en nombre mm=mms.toInt(); // Convertir en nombre mm ss=(dts.substring(6,8)).toInt(); // Extraire les secondes sous forme de nombre if (hh>=0 &&hh <10) dots=7; si (hh> 9 &&hh <20) points=11; si (hh> 19 &&hh <25) points=13; si (hh%10 ==1) points-=2 ; //Chaîne outmsg=dts.substring(0,5); // Extraire hh:mm (facultatif) String outmsg=String(hh); // Extraire h si h<10 // outmsg.concat(":"); // ajout :mais sur 2 colonnes !! outmsg.concat(char(124)); // ajoute 1 colonne complète entre les nombres outmsg.concat(dts.substring(3,5)); // add mm outmsg.toCharArray(buf,BUF_SIZE);}// Nouvelle version de la fonction, en utilisant la petite fontsvoid intégrée showsec(uint8_t secs){ uint8_t secs1=secs%10; uint8_t secs2=secs/10 ; pour (uint8_t k=0; k<3; k++){ matrix.setColumn(MAX_DEVICES*8-26-k,Font3x5 [secs2][k]); matrice.setColumn(MAX_DEVICES*8-30-k,Font3x5 [secs1][k]); }}boucle vide() { octet ledIntensity =ledintensitySelect(analogRead(LDR_PIN)); matrix.control(MD_MAX72XX::INTENSITY, ledIntensity);; // Utilise une valeur entre 0 et 15 pour la luminosité getHour(); // Lecture de l'heure depuis RTC printText(0,MAX_DEVICES-1,buf); // Afficher hh|mm de buf matrix.setColumn(MAX_DEVICES*8-dots,0) ; // Efface le | inst long non signé =millis(); // marque ce moment while (ss <53){ // Les 53 premières secondes de chaque minute affichent l'heure while (millis() - inst> 1000){ inst =millis(); ss++ ; // Augmente les secondes showsec(ss); // Afficher les secondes pour (uint8_t i =0; i <2; i++){ matrix.setColumn(MAX_DEVICES*8-dots,36); // Clignotement de deux points :delay(240); matrice.setColumn(MAX_DEVICES*8-dots,0) ; retard (240); } } } // Ensuite, "time" défile vers le haut :for (uint8_t i=0; i<8; i++){ matrix.transform(MD_MAX72XX::TSU); retard (3 * ATTENDRE); } // Écrivez la date actuelle :getDate(); printText(0,MAX_DEVICES-1,buf); retard (20 * ATTENDRE); // Écrivez le jour de la semaine (si non commenté) ://printText(0,MAX_DEVICES-1,wday); //délai (20*ATTENDRE); // Écrivez la température ambiante estimée à partir du capteur RTC int temp =rtc.getTemp(); temp=temp-1; // Offset -1 C String outmsg=String(temp); outmsg.concat("C"); outmsg.toCharArray(buf,BUF_SIZE); printText(0,MAX_DEVICES-1,buf); retard (20 * ATTENDRE); // Réglage de l'heure dans RTC si Serial Monitor est activé dans Arduino IDE :if (Serial.available()> 0 &×et==false) { AdjustClock(Serial.readString()); }}

Schémas

Inspiré par Leonardo Sposina, mais #define CS_PIN(Matrix)<--> 10(Nano)
Les schémas sont PRESQUE les mêmes pour tous les projets Matrix. Ici la photo-résistance est d'origine. Comme mentionné dans le code :#define CS_PIN(Matrix)<--> 10(Nano) https://github.com/leonardosposina/arduino-led-dot-matrix-clock

Processus de fabrication

  1. Horloge Arduino avec heures de prière islamique
  2. Arduino Temp. Moniteur et horloge en temps réel avec affichage 3.2
  3. Arduino avec Bluetooth pour contrôler une LED !
  4. Jouer avec Nextion Display
  5. Affichage de porte à matrice LED + détecteur de mouvement [Arduino Holiday]
  6. Arduino Nano :contrôler 2 moteurs pas à pas avec joystick
  7. Horloge à bascule Arduino à matrice LED unique
  8. Contrôler une matrice LED avec Arduino Uno
  9. Compteur Geiger portable avec Arduino Nano