ESP32-S3 RGB-LED-Matrix-Internet-Uhr-Projekt - 5 Regenbogenfarben

ESP32-S3 RGB-LED-Matrix-Internet-Uhr-Projekt - 5 Regenbogenfarben

ESP32-S3 Internetuhr mit Regenbogenfarbeffekt

Dieses Projekt ist eine ESP32-S3 RGB-Matrix-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. Im Gegensatz zu festen oder zufälligen Farbvarianten verwendet diese Uhr ein sanftesRegenbogenfarbeneffekt, wo jedes Zeichen kontinuierlich durch das RGB-Spektrum wechselt, während es scrollt. Die Uhr zeigt auch regelmäßig das Datum an und passt die Helligkeit automatisch zwischen Tag und Nacht an.

ESP32-s3_Internet-Uhr-Animation

Wie diese Uhr funktioniert

Sobald das ESP32-S3 über USB-C mit Strom versorgt wird, verbindet es sich mit Ihrem Wi-Fi-Netzwerk und ruft die aktuelle Ortszeit aus dem Internet ab. Das Display scrollt normalerweise die Uhrzeit, wechselt jedoch in einem festgelegten Intervall zur Anzeige des Datums. Sowohl die Uhrzeit als auch das Datum werden mit einem dynamischen Regenbogeneffekt dargestellt, wodurch ein lebendiges und animiertes Display auf der kleinen 8×8-Matrix entsteht.

Verwendete Bibliotheken

Das Skript basiert auf den folgenden Bibliotheken:

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

InstallierenAdafruit NeoMatrixVerwenden des Arduino Bibliotheksmanagers. Seine Abhängigkeiten, einschließlichAdafruit GFX LibraryundAdafruit NeoPixel, wird automatisch installiert.

Wichtige Benutzerkonfiguration

Matrixdaten-Pin (integrierte RGB-Matrix)

Obwohl die RGB-Matrix an das ESP32-S3-Board angeschlossen ist, muss der Datenpin 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.

Wi-Fi-SSID und Passwort (groß- und kleinschreibung beachten)

Ersetzen Sie die Wi-Fi-Anmeldeinformationen durch Ihre eigenen Netzwerkdetails:

const char* WIFI_SSID     = "your WIFI";
const char* WIFI_PASSWORD = "passW0rd";

Wichtig:Wi-Fi-SSIDs sindgroß- und kleinschreibungsempfindlichEin SSID namens"Book"ist nicht dasselbe wie"book"Wenn die Groß- und Kleinschreibung nicht genau übereinstimmt, kann sich der ESP32-S3 nicht verbinden.

NTP-Server, Zeitzone und Sommerzeit

Die Uhr synchronisiert die Zeit über einen Internet-NTP-Server:

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

Die lokale Zeit wird unter Verwendung dieser Zeitverschiebungen 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 (Beispiel: UTC-5 =-5 * 3600)
  • daylightOffset_secVerwenden3600wenn die Sommerzeit aktiv ist, oder0wenn nicht verwendet

Diese Werte werden angewendet mit:

configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);

Automatische Tages-/Nachthelligkeit

Die Helligkeit ändert sich automatisch je nach aktueller Uhrzeit:

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 dimmt die Matrix, um Blendung zu reduzieren. Während der Tagesstunden wird die normale Helligkeit wiederhergestellt.

Regenbogenfarbeneffekt

Dieses Projekt verwendet ein klassisches RGB-Farbrad, um sanfte Regenbogenfarben zu erzeugen. Jedes Zeichen wird mit einem leicht unterschiedlichen Farbversatz gezeichnet, und die Farben ändern sich im Laufe der Zeit, was eine fließende Regenbogenanimation erzeugt.

// Helper to create Rainbow Colors
uint32_t Wheel(byte WheelPos) {
  WheelPos = 255 - WheelPos;
  if (WheelPos < 85) {
    return matrix.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  }
  if (WheelPos < 170) {
    WheelPos -= 85;
    return matrix.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
  WheelPos -= 170;
  return matrix.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}

Während der Text scrollt, bewegt sich jedes Zeichen durch das RGB-Spektrum und erzeugt einen kontinuierlichen Regenbogeneffekt, der auf dem kleinen 8×8-Display besonders beeindruckend aussieht.

Verhalten der Zeit- und Datumsanzeige

Die Uhr hat separate Puffer für Zeit und Datum.

  • Zeit: HH:MM
  • Datum: MMM DD(zum BeispielJAN 08)

Das Datum wird in festen Intervallen angezeigt:

const uint32_t dateIntervalMs = 60000; // Show date every 1 minute

Am Ende jedes vollständigen Scroll-Zyklus entscheidet der Code, ob die Uhrzeit weiterhin angezeigt wird oder ob zur Datumsanzeige gewechselt wird.

Scroll-Logik auf einer 8×8-Matrix

Da das Display nur 8 Pixel breit ist, scrollt der Text sanft von rechts nach links. Sobald der Text den Bildschirm vollständig verlässt, setzt sich der Cursor zurück und der nächste Inhalt (Uhrzeit oder Datum) wird für die nächste Durchgang geladen.

Demonstration

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

  • Der ESP32-S3 verbindet sich mit Ihrem Wi-Fi-Netzwerk.
  • Die Zeit wird über das Internet synchronisiert.
  • Die Zeit rollt herein.HH:MMFormat
  • Das Datum erscheint periodisch.
  • Aller Text wird mit einem sanften, animierten Regenbogeneffekt dargestellt.
  • Der Bildschirm dimmt automatisch nachts und hellt sich tagsüber auf.

Downloads und Links

Der vollständige Quellcode wird unter diesem Artikel bereitgestellt. Nützliche Werkzeuge und Referenzen, einschließlich des RGB-Farbwähler, sind ebenfalls unter diesem Artikel 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
872-ESP32-S3 RGB LED Matrix Internte Clock Project 5 - Rainbow Color
Sprache: C++
Kopiert!

Ressourcen & Referenzen

Dateien📁

Fritzing-Datei