Arduino - 7-Segment-Uhr

In diesem Tutorial lernen wir, wie man eine 7-Segment-Uhr mit Arduino baut. Im Detail werden wir zwei Fälle betrachten:

Sie können auch das DS1307 RTC-Modul statt des DS3231 RTC-Moduls verwenden, indem Sie eine einzige Codezeile ändern. Siehe DS3231 vs DS1307

Erforderliche Hardware

1×Arduino Uno R3
1×USB 2.0 Kabel Typ A/B (für USB-A PC)
1×USB 2.0 Kabel Typ C/B (für USB-C PC)
1×TM1637 4-digit 7-segment Display
1×DS3231 Echtzeituhr(RTC)-Modul
1×(Alternativ) Real-Time Clock DS1307 Module
1×CR2032 Batterie
1×Breadboard
1×Verbindungskabel
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno
1×(Empfohlen) Breadboard-Shield für Arduino Uno
1×(Empfohlen) Gehäuse für Arduino Uno
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

1×DIYables STEM V3 Starter-Kit (Arduino enthalten)
1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über TM1637-Display, DS3231- und DS1307 RTC-Module

Wenn Sie nichts über das TM1637-7-Segment-Display, DS3231 und DS1307 (Pinbelegung, wie sie funktionieren, wie man programmiert ...) wissen, informieren Sie sich in den folgenden Tutorials darüber:

TM1637- und RTC-Bibliotheken installieren

  • Gehen Sie zum Bibliotheken Symbol in der linken Seitenleiste der Arduino-IDE.
  • Suchen Sie nach „TM1637“, und finden Sie dann die TM1637Display-Bibliothek von Avishay Orpaz
  • Klicken Sie auf die Install-Schaltfläche.
Arduino TM1637 4-stellige 7-Segment-Anzeige-Bibliothek
  • Suche “RTClib”, und finde anschließend die RTC-Bibliothek von Adafruit. Diese Bibliothek funktioniert mit dem DS3231 und dem DS1307.
  • Klicke auf die Schaltfläche Installieren, um die RTC-Bibliothek zu installieren.
Arduino RTC-Bibliothek
  • Möglicherweise werden Sie aufgefordert, weitere Bibliotheksabhängigkeiten zu installieren.
  • Klicken Sie auf die Schaltfläche Alle installieren, um alle Bibliotheksabhängigkeiten zu installieren.
Arduino RTC-Abhängigkeitsbibliothek

Verdrahtungsdiagramm

  • Das Verdrahtungsdiagramm zwischen Arduino, TM1637 4-stellige 7-Segmentanzeige und DS3231 RTC-Modul.
Arduino DS3231 7-Segment-Anzeige Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

  • Das Verdrahtungsdiagramm zwischen Arduino, TM1637 4-stellige 7-Segmentanzeige und DS1307 RTC-Modul.
Arduino DS1307 7-Segmentanzeige Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Arduino-Code - Anzeige von Minuten und Sekunden am 7-Segment-Display

/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/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; } }

Schnelle Schritte

  • Kopieren Sie den obigen Code und öffnen Sie ihn mit der Arduino-IDE
  • Klicken Sie in der Arduino-IDE auf die Schaltfläche Hochladen, um den Code auf den Arduino hochzuladen
  • Überprüfen Sie das Ergebnis im seriellen Monitor und auf dem TM1637-Display

Code-Erklärung

Lies die zeilenweise Erklärung in den Kommentarzeilen des Quellcodes!

Wenn Sie das DS1307 RTC-Modul statt des DS3231 RTC-Moduls verwenden möchten, müssen Sie lediglich eine im Code angegebene Zeile kommentieren bzw. entkommentieren.

Arduino-Code - Anzeige von Stunde und Minute auf dem 7-Segment-Display

/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/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; } }

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!