ESP32-S3 RGB-LED-Matrix-Internet-Uhr Projekt - 4 Zufallsfarben

ESP32-S3 RGB-LED-Matrix-Internet-Uhr Projekt - 4 Zufallsfarben

ESP32-S3 Internet-Uhr mit zufälligen RGB-Farben

Dieses Projekt ist eine ESP32-S3 RGB-Matrix-Internet-Uhr, die sich mit Wi-Fi verbindet, die lokale Zeit von einem NTP-Server synchronisiert und die Zeit scrollt inHH:MMFormat über das integrierte 8×8 RGB NeoMatrix. In dieser Version werden die Stunden, der Doppelpunkt und die Minuten jeweils dargestellt inzufällige Farbenausgewählt bei jedem vollständigen Scroll-Zyklus, wodurch eine dynamische und verspielte Uhranzeige entsteht, die sich ständig verändert.

ESP32-s3_Internet-Uhren-Animation

Wie diese Uhr funktioniert

Nachdem das Board über USB-C mit Strom versorgt wird, verbindet sich das ESP32-S3 mit Ihrem WLAN und ruft die aktuelle lokale Uhrzeit aus dem Internet ab. Die Zeit wird in drei Teile aufgeteilt - Stunden, Doppelpunkt und Minuten - und jeder Teil wird separat auf der RGB-Matrix angezeigt. Wenn der Text vollständig vom Bildschirm gescrollt ist, werden neue zufällige Farben für den nächsten Durchlauf ausgewählt.

Verwendete Bibliotheken

Dieser Sketch verwendet die folgenden Bibliotheken:

#include <WiFi.h>
#include "time.h"
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>

InstallierenAdafruit NeoMatrixaus dem Arduino-Bibliotheks-Manager. Benötigte Abhängigkeiten wieAdafruit GFX LibraryundAdafruit NeoPixelwird automatisch installiert.

Wichtige Benutzereinstellungen

Matrix-Daten-Pin (integrierte RGB-Matrix)

Obwohl die RGB-Matrix auf der Platine integriert ist, muss der Datapin dennoch im Code definiert werden:

#define MATRIX_PIN 14

GPIO 14 wird häufig auf ESP32-S3 RGB-Matrix-Boards verwendet. Wenn Ihre Board-Variante einen anderen Pin verwendet, aktualisieren Sie diesen Wert entsprechend.

Wi-Fi-SSID und Passwort (groß- und kleinschreibungssensitiv)

Ersetzen Sie die Wi-Fi-Anmeldeinformationen mit Ihren eigenen Netzwerkdetails:

const char* WIFI_SSID     = "your WiFi SSID";
const char* WIFI_PASSWORD = "passW0rd";

Wichtig:Wi-Fi-SSIDs sindgroß- und kleinschreibungsempfindlich. Ein SSID namens"Book"ist nicht das gleiche wie"book"Wenn die Groß- und Kleinschreibung nicht genau übereinstimmt, wird der ESP32-S3 keine Verbindung herstellen.

NTP-Server, Zeitzone und Sommerzeit

Die Zeitsynchronisation erfolgt über einen Internet-NTP-Server:

const char* ntpServer = "pool.ntp.org";

Die lokale Zeit wird unter Verwendung von UTC und den Zeitverschiebungen für die Sommerzeit berechnet:

// Toronto-ish: UTC-5, plus 1 hour DST
const long  gmtOffset_sec     = -5 * 3600;
const int   daylightOffset_sec = 3600;
  • gmtOffset_secUTC-Versatz in Sekunden (passen Sie es an Ihren Standort an)
  • daylightOffset_secBenutzen3600wenn die Sommerzeit aktiv ist, oder0ansonsten

Diese Einstellungen werden angewendet mit:

configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);

Automatische Helligkeit für Tag/Nacht

Die Uhr passt die Helligkeit automatisch basierend auf der aktuellen Stunde 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:00 Uhr und 6:00 Uhr wird das Display abgedunkelt, um Blendung in dunklen Umgebungen zu reduzieren. Während der Tagesstunden kehrt die Matrix zur normalen Helligkeit zurück.

Zufälliges RGB-Farbenverhalten

Eine vordefinierte Liste von RGB-Farben wird in einem Array gespeichert, wobei jede Farbe mit Rot-, Grün- und Blauwerten von 0 bis 255 definiert ist:

uint8_t userColors[][3] = {
  {255, 0, 0},    // Red
  {0, 255, 0},    // Green
  {0, 0, 255},    // Blue
  {255, 165, 0},  // Orange
  {255, 0, 255},  // Magenta
  {0, 255, 255},  // Cyan
  {255, 255, 0}   // Yellow
};

Bei jedem vollständigen Scroll-Zyklus:

  • DieStundenzahlenwerden eine zufällige Farbe zugewiesen
  • DieDoppelpunkterhält eine andere zufällige Farbe
  • DieMinutenziffernempfange eine weitere zufällige Farbe

Dies erzeugt eine ständig wechselnde Farbkombination, die die Uhr visuell interessant hält. Um Ihre eigenen benutzerdefinierten Farben zu erstellen, können Sie das RGB-Farbwähler-Tool verwenden:RGB-Farbauswahl.

Zeit Render-Logik

Die Zeit wird in drei Komponenten unterteilt:

  • Stunden: HH
  • Doppelpunkt: :
  • Minuten: MM

Jeder Teil wird einzeln gezeichnet, sodass er seine eigene Farbe haben kann, während sich alle Teile gemeinsam bewegen, um eine sanfte Scrollanimation über das 8×8-Display zu bilden.

Zufällige Farbgenerierung

Um die Farbzufälligkeit zu gewährleisten, initialisiert der Sketch den Zufallszahlengenerator beim Start über einen unverbundenen analogen Pin:

randomSeed(analogRead(0));

Das stellt sicher, dass die Farbkombinationen bei jedem Power-up und jedem Scroll-Zyklus unterschiedlich sind.

Demonstration

Nachdem Sie den Sketch hochgeladen und das Board über USB-C mit Strom versorgt haben:

  • Der ESP32-S3 verbindet sich mit Ihrem Wi-Fi-Netzwerk.
  • Die Zeit ist vom Internet synchronisiert.
  • Die Zeit rollt hereinHH:MMFormat
  • Stunden, Doppelpunkt und Minuten ändern sich in jeder Runde in zufällige Farben.
  • Der Bildschirm dimmt sich nachts automatisch.

Downloads und Links

Der vollständige Quellcode wird unterhalb dieses Artikels bereitgestellt. Nützliche Werkzeuge und Referenzen sind unterhalb dieses Artikels verlinkt.

Bilder

ESP32 S3 Matrix
ESP32 S3 Matrix
ESP32 S3 Matrix  pin out
ESP32 S3 Matrix pin out
ESP32-S3_RGB_8x8_matrix-3
ESP32-S3_RGB_8x8_matrix-3
ESP32-S3_RGB_8x8_matrix1
ESP32-S3_RGB_8x8_matrix1
ESP32-S3_RGB_8x8_matrix-2
ESP32-S3_RGB_8x8_matrix-2
ESP32-s3_internet_clock_animation
ESP32-s3_internet_clock_animation
873-ESP32-S3 RGB LED Matrix Internte Clock Project 4 - Random Color
Sprache: C++
Kopiert!

Ressourcen & Referenzen

Dateien📁

Fritzing-Datei