Mit der Bibliothek time.h soll die aktuelle Zeit auf einer 4-stelligen 7-Segment-Anzeige dargestellt werden.
Benötigte Bauteile
- ESP32-Mikrocontroller
- 4-stellige 7-Segment-Anzeige
- Leitungsdrähte
Konfiguration der Mikrocontroller
Schaltpläne
ESP32-Wroom
schwarz GND
rot 5V
grün 5
gelb 17
ESP32-C6
schwarz GND
rot 5V
grün 15
gelb 23
XIAO-ESP32-C3
schwarz GND
rot 5V
grün D7
gelb D8
Wemos D1 Mini
schwarz GND
rot 5V
grün D3
gelb D4
Benötigte Bibliothek
Funktionen der Bibliothek TM1637 (AKJ)
Schlüsselwort | Aktion |
---|---|
begin() | Modul starten |
setBrightness(int) | 0-15 → Helligkeit des Displays setzen |
clearScreen() | Anzeige löschen |
display(String) display(int) display(String/int, false, false, Position) | display"Text"); display(10); diaplay(1, false, false, 1); Position beginnt mit 0 |
colonOn() | Doppelpunkt einschalten |
colonOff() | Doppelpunkt ausschalten |
Das Programm (ESP32-Wroom)
Programme für andere Mikrocontroller findest du ⇒hier
Im Seriellen Monitor siehst du ob die Verbindung über DHCP erfolgreich war.
#include "WiFi.h"
#include "time.h"
#include "TM1637.h"
// Name des Objektes und verbundene Pins
TM1637 Anzeige(5, 17);
// Router/Passwort
char Router[] = "Router_SSID";
char Passwort[] = "xxxxxxxx";
// NTP-Server aus dem Pool
#define Zeitserver "de.pool.ntp.org"
/*
Liste der Zeitzonen
https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv
Zeitzone CET = Central European Time -1 -> 1 Stunde zurück
CEST = Central European Summer Time von
M3 = März, 5.0 = Sonntag 5. Woche, 02 = 2 Uhr
bis M10 = Oktober, 5.0 = Sonntag 5. Woche 03 = 3 Uhr
*/
#define Zeitzone "CET-1CEST,M3.5.0/02,M10.5.0/03"
// time_t enthält die Anzahl der Sekunden seit dem 1.1.1970 0 Uhr
time_t aktuelleZeit;
/*
Struktur tm
tm_hour -> Stunde: 0 bis 23
tm_min -> Minuten: 0 bis 59
tm_sec -> Sekunden 0 bis 59
tm_mday -> Tag 1 bis 31
tm_wday -> Wochentag (0 = Sonntag, 6 = Samstag)
tm_mon -> Monat: 0 (Januar) bis 11 (Dezember)
tm_year -> Jahre seit 1900
tm_yday -> vergangene Tage seit 1. Januar des Jahres
tm_isdst -> Wert > 0 = Sommerzeit (dst = daylight saving time)
*/
// Name der Struktur tm
tm Zeit;
WiFiServer Server(80);
// String für die Anzeige der Zeit
String ZeitAnzeige;
void setup()
{
// Zeitzone: Parameter für die zu ermittelnde Zeit
configTzTime(Zeitzone, Zeitserver);
Serial.begin(9600);
// auf serielle Verbindung warten
while (!Serial);
delay(1000);
// WiFi starten
WiFi.begin(Router, Passwort);
Serial.println("------------------------");
while (WiFi.status() != WL_CONNECTED)
{
delay(200);
Serial.print(".");
}
Serial.println();
Serial.print("Verbunden mit ");
Serial.println(Router);
Serial.print("IP über DHCP: ");
Serial.println(WiFi.localIP());
// Anzeige starten
Anzeige.begin();
// Helligkeit
Anzeige.setBrightness(10);
Anzeige.clearScreen();
}
void loop()
{
// aktuelle Zeit holen
time(&aktuelleZeit);
// localtime_r -> Zeit in die lokale Zeitzone setzen
localtime_r(&aktuelleZeit, &Zeit);
// : einschalten
Anzeige.colonOn();
/*
es kann bis zu 30 Sekunden dauern
bis die Zeit ermittelt wird
String ZeitAnzeige zusammenbauen
wenn Stunden/Minuten < 10 → führende 0 ergänzen
*/
if (Zeit.tm_hour < 10) ZeitAnzeige = "0" + String(Zeit.tm_hour);
else ZeitAnzeige = String(Zeit.tm_hour);
if (Zeit.tm_min < 10) ZeitAnzeige += "0" + String(Zeit.tm_min);
else ZeitAnzeige += String(Zeit.tm_min);
Anzeige.display(ZeitAnzeige);
delay(5000);
}
Verwandte Anleitungen
- Datum und Zeit mit ESP und time.h anzeigen
- Datum und Zeit mit dem NTP-Protokoll anzeigen
- Stoppuhr
- Wecker mit einem RTC-Modul
- Zeit im Seriellen Monitor mit ESP-Mikrocontroller anzeigen
- Datum, Uhrzeit und Temperatur auf einem LCD mit einem RTC-Modul anzeigen
- Zeiterfassung mit RFID-Modul
Letzte Aktualisierung: