Arduino - Horloge à 7 segments

Dans ce tutoriel, nous allons apprendre à fabriquer une horloge à 7 segments en utilisant Arduino. Plus précisément, nous étudierons deux cas :

Vous pouvez également utiliser le module RTC DS1307 au lieu du module RTC DS3231 en modifiant une seule ligne de code. Voir DS3231 vs DS1307

À propos des afficheurs TM1637, des modules RTC DS3231 et DS1307

Si vous ne connaissez pas l'affichage 7 segments TM1637, le DS3231 et le DS1307 (brochage, fonctionnement, programmation ...), renseignez-vous sur ces derniers dans les tutoriels suivants :

Installez les bibliothèques TM1637 et RTC

  • Naviguez jusqu'à l'icône Libraries située dans la barre latérale gauche de l'IDE Arduino.
  • Recherchez "TM1637", puis trouvez la bibliothèque TM1637Display par Avishay Orpaz.
  • Cliquez sur le bouton Install.
Bibliothèque d'affichage à 4 chiffres et 7 segments TM1637 pour Arduino
  • Recherchez “RTClib”, puis trouvez la bibliothèque RTC d'Adafruit. Cette bibliothèque fonctionne avec les DS3231 et DS1307.
  • Cliquez sur le bouton Install pour installer la bibliothèque RTC.
Bibliothèque RTC Arduino
  • Il se peut qu'on vous demande d'installer d'autres dépendances de bibliothèques
  • Cliquez sur le bouton Install All pour installer toutes les dépendances des bibliothèques.
Bibliothèque de dépendance rtc Arduino

Diagramme de câblage

  • Le schéma de câblage entre Arduino, l'afficheur 4 chiffres 7 segments TM1637 et le module RTC DS3231.
Schéma de câblage de l'affichage à 7 segments Arduino DS3231

This image is created using Fritzing. Click to enlarge image

  • Le schéma de câblage entre Arduino, l'afficheur 7 segments à 4 chiffres TM1637 et le module RTC DS1307.
Schéma de câblage Arduino DS1307 avec affichage 7 segments

This image is created using Fritzing. Click to enlarge image

Code Arduino - Affichage des minutes et des secondes sur l'affichage 7 segments

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino/arduino-7-segment-clock */ #include <TM1637Display.h> #include <RTClib.h> // define the connections pins #define CLK 9 #define DIO 10 // create a display object of type TM1637Display TM1637Display display = TM1637Display(CLK, DIO); RTC_DS1307 rtc; // RTC_DS3231 rtc; // uncomment this line and comment the above line if using DS3231 module unsigned long time_m = 0; // the variable to store minute unsigned long time_s = 0; // the variable to store second unsigned long last_s = 0; // the variable to store the last updated second void setup() { Serial.begin(9600); display.clear(); display.setBrightness(7); // set the brightness to 7 (0:dimmest, 7:brightest) // SETUP RTC MODULE if (!rtc.begin()) { Serial.println("Couldn't find RTC"); Serial.flush(); while (true) ; } // automatically sets the RTC to the date & time on PC this sketch was compiled rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); } void loop() { DateTime now = rtc.now(); time_m = now.minute(); time_s = now.second(); if (time_s != last_s) { // only update if changed unsigned long time = time_m * 100 + time_s; display.showNumberDecEx(time, 0b11100000, false, 4, 0); Serial.print(time_m); Serial.print(":"); Serial.println(time_s); last_s = time_s; } }

Étapes rapides

  • Copiez le code ci-dessus et ouvrez-le avec Arduino IDE.
  • Cliquez sur le bouton Upload dans Arduino IDE pour charger le code dans l'Arduino.
  • Vérifiez le résultat sur le moniteur série et l'afficheur TM1637.

Explication du code

Lisez l'explication ligne par ligne dans les lignes de commentaire du code source !

Si vous souhaitez utiliser le module RTC DS1307 au lieu du module RTC DS3231, vous devez simplement commenter/décommenter une ligne spécifiée dans le code.

Code Arduino - Affichage de l'heure et des minutes sur l'affichage 7 segments

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino/arduino-7-segment-clock */ #include <TM1637Display.h> #include <RTClib.h> // define the connections pins #define CLK 9 #define DIO 10 // create a display object of type TM1637Display TM1637Display display = TM1637Display(CLK, DIO); RTC_DS1307 rtc; // RTC_DS3231 rtc; // uncomment this line and comment the above line if using DS3231 module unsigned long time_h = 0; // the variable to store hour unsigned long time_m = 0; // the variable to store minute unsigned long last_m = 0; // the variable to store the last updated hour void setup() { Serial.begin(9600); display.clear(); display.setBrightness(7); // set the brightness to 7 (0:dimmest, 7:brightest) // SETUP RTC MODULE if (!rtc.begin()) { Serial.println("Couldn't find RTC"); Serial.flush(); while (true) ; } // automatically sets the RTC to the date & time on PC this sketch was compiled rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); } void loop() { DateTime now = rtc.now(); time_h = now.hour(); time_m = now.minute(); if (time_m != last_m) { // only update if changed unsigned long time = time_h * 100 + time_m; display.showNumberDecEx(time, 0b11100000, false, 4, 0); Serial.print(time_h); Serial.print(":"); Serial.println(time_m); last_m = time_m; } }

Vidéo

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!