Dieses Tutorial ist Teil von: ESP32-S3 RGB-LED-Matrix
Ein cooles Projekt zum Nachbauen – sowohl für Spaß als auch für praktische Anwendungen – mit dem ESP32-S3 RGB-Matrix-Modul. Links zu weiteren Videos finden Sie unter diesem Artikel.
ESP32-S3 RGB-LED-Matrix-Internet-Uhrprojekt - 2-Uhr mehrfarbige Zeit- und Datumsanzeige
ESP32-S3 RGB NeoMatrix Internetuhr mit Zeit- und Datumsanzeige
Dieses Projekt ist eine verbesserte ESP32-S3 RGB-Matrix-Internet-Uhr, die nicht nur die aktuelle Uhrzeit anzeigt, sondern auch regelmäßig das Datum darstellt. Der ESP32-S3 verbindet sich mit Wi-Fi, synchronisiert die Zeit von einem NTP-Server und scrollt entwederHH:MModer das Datum (zum BeispielSEP 21) über eine 8×8 RGB NeoMatrix. Die Anzeige unterstützt eine automatische Helligkeitsregelung für Tag/Nacht und anpassbare RGB-Farben.

Was diese Uhr macht
Nachdem Sie sich mit Ihrem Wi-Fi-Netzwerk verbunden haben, ruft der ESP32-S3 die aktuelle lokale Uhrzeit aus dem Internet ab. Die Uhr zeigt normalerweise die Zeit an, wechselt jedoch in einem festen Intervall zur Anzeige des Datums. Die Textfarbe kann auf eine Farbe festgelegt oder automatisch durch mehrere benutzerdefinierte Farben wechseln. Die Helligkeit wird nachts automatisch reduziert, um das Display augenfreundlicher zu gestalten.
Verwendete Bibliotheken
Dieser Sketch hängt von den folgenden Bibliotheken ab:

#include <WiFi.h>
#include "time.h"
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>InstallierenAdafruit NeoMatrixaus dem Arduino-Bibliotheks-Manager. Alle erforderlichen Abhängigkeiten wieAdafruit GFX LibraryundAdafruit NeoPixelwird automatisch installiert.

Wichtige Benutzerkonfiguration
Wi-Fi-SSID und Passwort (groß- und kleinschreibung ist relevant)
Sie müssen die Wi-Fi-Zugangsdaten durch Ihre eigenen Netzwerkinformationen ersetzen:

const char* WIFI_SSID = "WiFi";
const char* WIFI_PASSWORD = "passW0rd";Wichtig:Wi-Fi-SSIDs sindgroß- und kleinschreibung beachten. Zum Beispiel ein SSID mit dem Namen"Book"istnichtdas gleiche wie"book"Wenn die Groß- und Kleinschreibung nicht genau übereinstimmt, wird der ESP32 keine Verbindung herstellen.
NTP-Server, Zeitzone und Sommerzeit
Die Uhr verwendet einen Internet-Zeitserver:
const char* ntpServer = "pool.ntp.org";Ortszeit wird unter Verwendung dieser Zeitverschiebungen berechnet:
const long gmtOffset_sec = -5 * 3600;
const int daylightOffset_sec = 3600;gmtOffset_secIhr UTC-Offset in Sekunden (Beispiel: UTC-5 =-5 * 3600)daylightOffset_secVerwenden3600für DST oder0wenn die Sommerzeit nicht verwendet wird
Diese Einstellungen werden angewendet mit:
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);Helligkeitsregelung (Tag / Nacht)
Dieses Projekt passt die Helligkeit automatisch basierend auf der Tageszeit an:
const int DAY_BRIGHTNESS = 40;
const int NIGHT_BRIGHTNESS = 5;
const int NIGHT_START_HOUR = 22;
const int NIGHT_END_HOUR = 6;Zwischen 22 Uhr und 6 Uhr wird die Helligkeit reduziert, um das Display in dunklen Umgebungen weniger ablenkend zu machen. Sie können diese Werte an Ihre Vorlieben anpassen.
RGB-Farbkonfiguration
Die Uhr unterstützt sowohl den festen Farbbereich als auch das automatische Farbwechseln. Benutzerspezifische RGB-Farben werden in einem Array gespeichert:
uint8_t userColors[][3] = {
{17, 43, 171}, // Light Blue
{255, 0, 0}, // Red
{0, 255, 0}, // Green
{255, 165, 0}, // Orange
{255, 0, 255} // Magenta
};Jede Farbe verwendet RGB (Rot, Grün, Blau) Werte im Bereich von 0 bis 255. Durch Ändern dieser Zahlen können Sie praktisch jede Farbe für das Display erstellen. WennuseFixedColorist eingestellt auftrue, die Uhr verwendet immer eine Farbe. Wenn sie aufgestellt ist zufalseDie Farbe ändert sich automatisch nach jedem vollständigen Scrollen.
Um schnell genaue RGB-Werte für jede gewünschte Farbe zu finden, verwenden Sie das RGB-Farbwähler-Tool:RGB-Farbwähler.
Datum- und Zeitformatierung
Die Zeit ist formatiert alsHH:MMund in einem kleinen Zeichenpuffer gespeichert. Das Datum ist als Großbuchstabenzeichenkette formatiert, wie zum BeispielSEP 21Das Display schaltet automatisch in einem festen Intervall zwischen Uhrzeit und Datum um.
Scroll-Logik auf einem 8×8-Display
Da eine 8×8-Matrix zu klein ist, um den gesamten Text auf einmal anzuzeigen, scrollt das Sketch den Text horizontal. Sobald der Text die Anzeige vollständig verlässt, wird die Farbe aktualisiert und der Inhalt wechselt bei Bedarf zwischen Uhrzeit und Datum.
Demonstration
Nach dem Hochladen des Entwurfs:
- Der ESP32 verbindet sich mit Wi-Fi.
- Die Zeit wird vom Internet synchronisiert.
- Die aktuelle Zeit läuft über die Matrix.
- Das Datum erscheint gelegentlich.
- Die Helligkeit passt sich automatisch tagsüber und nachts an.
Downloads und Links
Der vollständige Quellcode ist unter diesem Artikel aufgeführt. Links zu Teilen, Werkzeugen und Datenblättern sind ebenfalls unter diesem Artikel verfügbar.
Dieses Tutorial ist Teil von: ESP32-S3 RGB-LED-Matrix
- ESP32-S3 RGB-LED-Matrix-Projekte (Kippspiel, Text, Pfeil, WiFi-Demo)
- ESP32-S3 RGB-LED-Matrix-Projekt 2 - Lauftext
- ESP32-S3 RGB-LED-Matrix-Projekt 3 - Text vom Mobiltelefon
- ESP32-S3 RGB-LED-Matrix-Projekt 4 - Neigungspunkt
- ESP32-S3 RGB-LED-Matrix-Projekt 5 - Pfeil immer nach oben
- ESP32-S3 RGB-LED-Matrix-Projekt 6 - Cible-Spiel
- ESP32-S3 RGB-LED-Matrix Wi-Fi + NTP-Uhrzeit-Projekt - 1 Grundlegende Uhr
- ESP32-S3 RGB-LED-Matrix-Internet-Uhr-Projekt - 3 Nachtfarben mit Datum
- ESP32-S3 RGB-LED-Matrix-Internet-Uhr-Projekt - 5 Regenbogenfarben
- ESP32-S3 RGB-LED-Matrix-Internet-Uhr Projekt - 4 Zufallsfarben
- ESP32-S3 RGB-LED-Matrix-Test für RGB-, GRB-Einstellung
/*
* =====================================================================================
* ESP32-S3 INTERNET RGB CLOCK (8x8 Matrix) - Project 2
Multi color
* =====================================================================================
watch video https://youtube.com/shorts/4iWjLiD7fS8
📚⬇️ Download and resource page https://robojax.com/RJT839
* Author: Ahmad Shamshiri (Robojax.com)
* Date: 07 Jan 2026
* * FEATURES:
* 1. WiFi/NTP Time: Syncs automatically with internet time servers.
* 2. Cycle-Based Color: Color changes ONLY when text finishes a full scroll.
* 3. Auto-Brightness: Dims the LEDs during night hours (User-configurable).
* 4. Periodic Date: Scrolls the date (e.g., "JAN 07") every 2 minutes.
* * USER CONFIGURATION GUIDE:
* -------------------------
* - WiFi: Change 'WIFI_SSID' and 'WIFI_PASSWORD' to your local network.
* - Colors: Add or remove {R, G, B} sets in the 'userColors' array.
* - Night Mode: Adjust 'NIGHT_START_HOUR' and 'NIGHT_BRIGHTNESS'.
* =====================================================================================
*/
#include <WiFi.h>
#include "time.h"
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
#define MATRIX_PIN 14
// --- BRIGHTNESS CONFIGURATION ---
const int DAY_BRIGHTNESS = 40;
const int NIGHT_BRIGHTNESS = 5;
const int NIGHT_START_HOUR = 22;
const int NIGHT_END_HOUR = 6;
// --- COLOR CONFIGURATION ---
bool useFixedColor = false;
int fixedColorIndex = 0;
uint8_t userColors[][3] = {
{17, 43, 171}, // Light Blue
{255, 0, 0}, // Red
{0, 255, 0}, // Green
{255, 165, 0}, // Orange
{255, 0, 255} // Magenta
};
// 👇 REPLACE these with your real home WiFi name & password
const char* WIFI_SSID = "WiFi";
const char* WIFI_PASSWORD = "passW0rd";
int currentColorIndex = 0;
int totalColors = sizeof(userColors) / sizeof(userColors[0]);
// --- DATE/TIME INTERVALS ---
unsigned long lastDateShowMs = 0;
const uint32_t dateIntervalMs = 30000; // 2 minutes
unsigned long lastTimeUpdateMs = 0;
const uint16_t timeUpdateIntervalMs = 1000;
unsigned long lastScrollMs = 0;
const uint16_t scrollIntervalMs = 100;
// --- GLOBAL VARIABLES ---
Adafruit_NeoMatrix matrix(8, 8, MATRIX_PIN,
NEO_MATRIX_TOP + NEO_MATRIX_LEFT +
NEO_MATRIX_ROWS + NEO_MATRIX_PROGRESSIVE,
NEO_RGB + NEO_KHZ800);
char timeText[6] = "00:00";
char dateText[10] = "";
char currentDisplayText[12] = "";
int16_t scrollX = 8;
const char* ntpServer = "pool.ntp.org";
const long gmtOffset_sec = -5 * 3600;
const int daylightOffset_sec = 3600;
void updateTimeAndDate() {
struct tm timeinfo;
if (!getLocalTime(&timeinfo)) return;
snprintf(timeText, sizeof(timeText), "%02d:%02d", timeinfo.tm_hour, timeinfo.tm_min);
strftime(dateText, sizeof(dateText), "%b %d", &timeinfo);
for (int i = 0; dateText[i]; i++) dateText[i] = toupper(dateText[i]);
if (timeinfo.tm_hour >= NIGHT_START_HOUR || timeinfo.tm_hour < NIGHT_END_HOUR) {
matrix.setBrightness(NIGHT_BRIGHTNESS);
} else {
matrix.setBrightness(DAY_BRIGHTNESS);
}
}
void scrollDisplay() {
matrix.fillScreen(0);
// FIXED LOGIC: Uses currentColorIndex which only changes at the end of a scroll
int idx = useFixedColor ? fixedColorIndex : currentColorIndex;
matrix.setTextColor(matrix.Color(userColors[idx][0], userColors[idx][1], userColors[idx][2]));
matrix.setCursor(scrollX, 0);
matrix.print(currentDisplayText);
matrix.show();
scrollX--;
int16_t textWidth = strlen(currentDisplayText) * 6;
// THE TRIGGER POINT: This happens only when text is fully off-screen
if (scrollX < -textWidth) {
scrollX = matrix.width();
// 1. Cycle the color now and only now
if (!useFixedColor) {
currentColorIndex = (currentColorIndex + 1) % totalColors;
}
// 2. Decide whether to switch between Time and Date
if (millis() - lastDateShowMs > dateIntervalMs) {
strcpy(currentDisplayText, dateText);
lastDateShowMs = millis();
} else {
strcpy(currentDisplayText, timeText);
}
}
}
void setup() {
Serial.begin(115200);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
matrix.begin();
matrix.setTextWrap(false);
matrix.setBrightness(DAY_BRIGHTNESS);
updateTimeAndDate();
strcpy(currentDisplayText, timeText);
}
void loop() {
unsigned long now = millis();
if (now - lastTimeUpdateMs >= timeUpdateIntervalMs) {
lastTimeUpdateMs = now;
updateTimeAndDate();
}
if (now - lastScrollMs >= scrollIntervalMs) {
lastScrollMs = now;
scrollDisplay();
}
}
Dinge, die Sie vielleicht brauchen
-
Amazon
-
eBay
-
AliExpressESP32-S3 RGB-Matrix von AliExpress kaufen (2)s.click.aliexpress.com
-
AliExpressKaufen Sie das ESP32-S3 RGB-Matrix von AliExpress.s.click.aliexpress.com
Ressourcen & Referenzen
-
Video
Dateien📁
Fritzing-Datei
-
esp32-S3-supermini-tht Fritzing-Teil
esp32-S3-supermini-tht.fzpz0.02 MB