Hierdie tutorialie is deel van: ESP32-S3 RGB LED-matriks
'n Koel projek om te skep vir prettige en praktiese toepassings met die ESP32-S3 RGB Matriksmodule. Skakels na ander video's is onder hierdie artikel.
ESP32-S3 RGB LED-matriks-internetklokprojek - 3 Nagkleure met Datum
ESP32-S3 RGB NeoMatrix Internet-klok met Outomatiese Dag/Nag-Heldheid
Hierdie projek is 'n ESP32-S3 RGB-matriks-internetklok wat outomaties helderheid gedurende die dag en nag aanpas. Die ESP32-S3 verbind met Wi-Fi, sinkroniseer die huidige tyd vanaf 'n NTP-bediener, en rol die tyd in HH:MM-formaat oor 'n 8×8 RGB NeoMatrix. Die klok ondersteun ook vaste of siklus-RGB-kleure vir die vertaalteks.

Wat hierdie klok doen
Na aanskakeling verbind die ESP32-S3 met jou Wi-Fi-netwerk en haal die huidige plaaslike tyd van die internet af. Die tyd rol glad oor die LED-matriks. Gedurende nagure dim die vertoning outomaties na 'n laer helderheid, terwyl dit gedurende die dag terugskakel na 'n helderder vlak.
Biblioteke gebruik
Hierdie skets gebruik die volgende biblioteke:

#include <WiFi.h>
#include "time.h"
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
Installeer Adafruit NeoMatrix vanaf die Arduino Library Manager. Alle vereiste afhanklikhede soos Adafruit GFX Library en Adafruit NeoPixel sal outomaties geïnstalleer word.

Belangrike gebruikerkonfigurasie
Wi-Fi SSID en wagwoord (hooflettergevoelig)
Vervang die volgende waardes met jou eie Wi-Fi-geloofsbriewe:

const char* WIFI_SSID = "WiFi";
const char* WIFI_PASSWORD = "passW0rd";
Belangrik: Wi-Fi-SSID's is hooflettergevoelig. 'n SSID genaamd "Book" is nie dieselfde as "book" nie. As die hoofletters nie presies ooreenstem nie, sal die ESP32 nie kan verbind nie.
NTP-bediener, tydsone en somertyd
Die klok sinkroniseer tyd met behulp van die volgende NTP-bediener:
const char* ntpServer = "pool.ntp.org";
Plaaslike tyd word bereken met hierdie afwykings:
const long gmtOffset_sec = -5 * 3600;
const int daylightOffset_sec = 3600;
gmtOffset_secdefinieer jou UTC-afwyking in sekondesdaylightOffset_secvoeg een uur by wanneer somertyd aktief is (gebruik0indien nie nodig nie)
Hierdie waardes word toegepas met:
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
Outomatiese dag / nag-helderheid
Die vertoonhelderheid verander outomaties gebaseer op die huidige uur:
const int DAY_BRIGHTNESS = 40;
const int NIGHT_BRIGHTNESS = 5;
const int NIGHT_START_HOUR = 22; // 10 PM
const int NIGHT_END_HOUR = 6; // 6 AM
Tussen 10 PM en 6 AM word die matrikshelderheid verminder om dit gemaklik te maak in donker omgewings. Buite daardie ure word volle daghelderheid herstel. Jy kan hierdie waardes aanpas om by jou kamerbeligting te pas.
RGB-kleurk konfigurasie
Die kloktekskleur word gedefinieer met RGB (Rooi, Groen, Blou)-waardes, waar elke kanaal wissel van 0 tot 255. Veelvuldige kleure kan in 'n skikking gestoor word en outomaties gesirkuleer word:
uint8_t userColors[][3] = {
{17, 43, 171}, // Ligblou
{255, 0, 0}, // Rooi
{0, 255, 0}, // Groen
{255, 165, 0}, // Oranje
{255, 0, 255} // Magenta
};
As useFixedColor op true gestel is, gebruik die klok altyd een kleur. As dit op false gestel is, verander die kleur outomaties na elke volle rol van die tyd.
Om vinnig die presiese RGB-waardes vir enige kleur te vind, gebruik die RGB-kleurkiesteerder: Kleurkiesteerder .
Tydvertoning en rol
Die huidige tyd word geformateer as HH:MM en gestoor in 'n klein karakterbuffer. Omdat die vertoning slegs 8 pixels wyd is, rol die teks glad van regs na links. Sodra die tyd die vertoning heeltemal verlaat, word die volgende kleur (indien geaktiveer) gekies vir die volgende deurgang.
Demonstrasie
Na die oplaai van die skets:
- Die ESP32-S3 verbind met Wi-Fi
- Tyd word vanaf die internet gesinkroniseer
- Die huidige tyd rol oor die RGB-matriks
- Helderheid verander outomaties tussen dag en nag
- Tekskleur bly vas of sirkuleer gebaseer op jou instellings
Aflaaie en skakels
Die volledige bronkode word onder hierdie artikel verskaf. Skakels na onderdele, gereedskap en datablaaie is onder hierdie artikel beskikbaar.
Hierdie handleiding is deel van: ESP32-S3 RGB LED-matriks
- ESP32-S3 RGB LED-matriksprojek 1- Basiese Punt
- ESP32-S3 RGB LED-matriksprojek 2 - Roltelende teks
- ESP32-S3 RGB LED-matriksprojek 3 - Teks vanaf selfoon
- ESP32-S3 RGB LED-matriksprojek 4 - Kantelkolletjie
- ESP32-S3 RGB LED-matriksprojek 5 - Pyl altyd op
- ESP32-S3 RGB LED-matriksprojek 6 - Cible-speletjie
- ESP32-S3 RGB LED-matriks Wi-Fi + NTP-tydklokprojek -1 Basiese klok
- ESP32-S3 RGB LED-matriks Internet-klokprojek - 2 Klok multi-kleur Tyd & Datum Vertoning
- ESP32-S3 RGB LED-matriks-internetklokprojek - 5 Reënboogkleur
- ESP32-S3 RGB LED-matriks-internetklokprojek - 4 Ewekansige kleure
- ESP32-S3 RGB LED Matrix test for RGB, GRB setting
/*
* =====================================================================================
* ESP32-S3 INTERNET RGB CLOCK (8x8 Matrix) - Project 3- Night color with Date
* =====================================================================================
watch video https://youtube.com/shorts/4iWjLiD7fS8
📚⬇️ Download and resource page https://robojax.com/RJT840
* Author: Gemini (AI Thought Partner) & 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 after the time finishes a full scroll.
* 3. Auto-Brightness: Dims the LEDs during night hours (User-configurable).
* =====================================================================================
*/
#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; // 10 PM
const int NIGHT_END_HOUR = 6; // 6 AM
// --- 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]);
// --- INTERVALS ---
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";
int16_t scrollX = 8;
const char* ntpServer = "pool.ntp.org";
const long gmtOffset_sec = -5 * 3600;
const int daylightOffset_sec = 3600;
void updateTimeText() {
struct tm timeinfo;
if (!getLocalTime(&timeinfo)) return;
// Format HH:MM
snprintf(timeText, sizeof(timeText), "%02d:%02d", timeinfo.tm_hour, timeinfo.tm_min);
// Apply Auto-Brightness
if (timeinfo.tm_hour >= NIGHT_START_HOUR || timeinfo.tm_hour < NIGHT_END_HOUR) {
matrix.setBrightness(NIGHT_BRIGHTNESS);
} else {
matrix.setBrightness(DAY_BRIGHTNESS);
}
}
void scrollTime() {
matrix.fillScreen(0);
// Pick the color (Fixed or Cycle)
int idx = useFixedColor ? fixedColorIndex : currentColorIndex;
matrix.setTextColor(matrix.Color(userColors[idx][0], userColors[idx][1], userColors[idx][2]));
matrix.setCursor(scrollX, 0);
matrix.print(timeText);
matrix.show();
scrollX--;
// Width for "HH:MM" is roughly 30 pixels
int16_t textWidth = 30;
// TRIGGER: When time is fully off-screen
if (scrollX < -textWidth) {
scrollX = matrix.width(); // Reset position to right side
// Cycle to the next color in the array for the next pass
if (!useFixedColor) {
currentColorIndex = (currentColorIndex + 1) % totalColors;
Serial.print("Next cycle color index: ");
Serial.println(currentColorIndex);
}
}
}
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);
updateTimeText();
}
void loop() {
unsigned long now = millis();
// Update time digits and brightness once per second
if (now - lastTimeUpdateMs >= timeUpdateIntervalMs) {
lastTimeUpdateMs = now;
updateTimeText();
}
// Handle the scrolling animation
if (now - lastScrollMs >= scrollIntervalMs) {
lastScrollMs = now;
scrollTime();
}
}
Goedere wat jy dalk nodig het
-
Amazon
-
eBay
-
AliExpressPurchase ESP32-S3 RGB matrix from AliExpresss.click.aliexpress.com
-
AliExpressPurchase ESP32-S3 RGB matrix from AliExpress (2)s.click.aliexpress.com
Hulpbronne en verwysings
-
Video
-
Internaal🎨 Color picker Toolrobojax.com
Lêers📁
Fritzing-lêer
-
esp32-S3-supermini-tht fritzing part
esp32-S3-supermini-tht.fzpz0.02 MB