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

Préparation du matériel

1×Arduino Uno
1×USB 2.0 cable type A/B
1×TM1637 4-digit 7-segment Display
1×Real-Time Clock DS3231 Module
1×(Alternatively) Real-Time Clock DS1307 Module
1×CR2032 battery
1×Breadboard
1×Jumper Wires
1×(Optional) 9V Power Adapter for Arduino
1×(Recommended) Screw Terminal Block Shield for Arduino Uno
1×(Optional) Transparent Acrylic Enclosure For Arduino Uno

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À 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!