Questo tutorial è parte di: Matrice LED RGB ESP32-S3
Fantastico progetto da realizzare per applicazioni pratiche e divertenti utilizzando il modulo RGB Matrix ESP32-S3. I link ad altri video si trovano più avanti in questo articolo.
Progetto Orologio Internet con Matrice LED RGB ESP32-S3 - Orologio a colori multipli con visualizzazione di Ora e Data
Orologio Internet ESP32-S3 RGB NeoMatrix con visualizzazione di data e ora
Questo progetto è un orologio Internet con matrice RGB ESP32-S3 migliorato che non solo mostra l'ora corrente, ma visualizza anche periodicamente la data. L'ESP32-S3 si connette al Wi-Fi, sincronizza l'ora da un server NTP e scorre o meno.HH:MMo la data (ad esempioSEP 21) attraverso un NeoMatrix RGB 8×8. Il display supporta il controllo automatico della luminosità giorno/notte e colori RGB personalizzabili.

Cosa fa questo orologio
Dopo essersi connesso alla tua rete Wi-Fi, l'ESP32-S3 recupera l'ora locale attuale da Internet. L'orologio normalmente scorre l'ora, ma a intervalli fissi passa a mostrare la data. Il colore del testo può essere fissato a un colore unico o alternare automaticamente più colori definiti dall'utente. La luminosità viene automaticamente ridotta di notte per rendere il display più adatto agli occhi.
Librerie utilizzate
Questo schizzo dipende dalle seguenti librerie:

#include <WiFi.h>
#include "time.h"
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>InstallaAdafruit NeoMatrixdall'Arduino Library Manager. Tutte le dipendenze necessarie comeAdafruit GFX LibraryeAdafruit NeoPixelverrà installato automaticamente.

Configurazione utente importante
SSID e password Wi-Fi (differenziali maiuscole e minuscole)
Devi sostituire le credenziali Wi-Fi con le informazioni della tua rete.

const char* WIFI_SSID = "WiFi";
const char* WIFI_PASSWORD = "passW0rd";Importante:Le SSID Wi-Fi sonosensibile alle maiuscole. Ad esempio, un SSID chiamato"Book"ènonlo stesso di"book"Se la capitalizzazione non corrisponde esattamente, l'ESP32 non riuscirà a connettersi.
server NTP, fuso orario e ora legale
L'orologio utilizza un server di ora internet:
const char* ntpServer = "pool.ntp.org";L'ora locale viene calcolata utilizzando questi offset:
const long gmtOffset_sec = -5 * 3600;
const int daylightOffset_sec = 3600;gmtOffset_secIl tuo offset UTC in secondi (esempio: UTC-5 =-5 * 3600)daylightOffset_secUtilizzare3600per CDT o0se l'ora legale non è utilizzata
Queste impostazioni vengono applicate utilizzando:
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);Controllo della luminosità (giorno / notte)
Questo progetto regola automaticamente la luminosità in base all'ora del giorno:
const int DAY_BRIGHTNESS = 40;
const int NIGHT_BRIGHTNESS = 5;
const int NIGHT_START_HOUR = 22;
const int NIGHT_END_HOUR = 6;Tra le 22:00 e le 6:00, la luminosità viene ridotta per rendere il display meno disturbante in ambienti bui. Puoi regolare questi valori in base alle tue preferenze.
Configurazione del colore RGB
L'orologio supporta sia la modalità a colori fissi che il ciclo automatico dei colori. I colori RGB definiti dall'utente sono memorizzati in un array:
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
};Ogni colore utilizza valori RGB (Rosso, Verde, Blu) che vanno da 0 a 255. Modificando questi numeri, puoi creare praticamente qualsiasi colore per il display. SeuseFixedColorè impostato pertrue, l'orologio utilizza sempre un colore. Se impostato sufalse, il colore cambia automaticamente dopo ogni scroll completo.
Per trovare rapidamente valori RGB accurati per qualsiasi colore desideri, utilizza lo strumento Selettore Colore RGB:Selettore Colore RGB.
Formattazione di data e ora
Il tempo è formattato comeHH:MMe memorizzato in un piccolo buffer di caratteri. La data è formattata come una stringa in maiuscolo, ad esempioSEP 21Il display passa automaticamente tra l'ora e la data a un intervallo fisso.
Logica di scorrimento su un display 8×8
Poiché una matrice 8×8 è troppo piccola per visualizzare il testo completo in una sola volta, il disegno scorre il testo orizzontalmente. Una volta che il testo esce completamente dal display, il colore viene aggiornato e il contenuto passa tra ora e data quando necessario.
Dimostrazione
Dopo aver caricato lo schizzo:
- L'ESP32 si connette al Wi-Fi.
- Il tempo è sincronizzato da internet.
- Il tempo attuale scorre attraverso la matrice.
- La data appare periodicamente.
- La luminosità si regola automaticamente per il giorno e la notte.
Download e collegamenti
Il codice sorgente completo è fornito sotto questo articolo. I collegamenti a parti, strumenti e schede informative sono disponibili anche sotto questo articolo.
Questo tutorial è parte di: Matrice LED RGB ESP32-S3
- Progetti con Matrice LED RGB ESP32-S3 (Gioco Inclinazione, Testo, Freccia, Demo WiFi)
- Progetto Matrice LED RGB ESP32-S3 2 - Testo Scorrevole
- Progetto ESP32-S3 Matrice LED RGB 3 - Testo da telefono cellulare
- Progetto Matrice LED RGB ESP32-S3 4 - Punta inclinata
- Progetto Matrice LED RGB ESP32-S3 5 - Freccia sempre verso l'alto
- Progetto 6 della matrice LED RGB ESP32-S3 - Gioco Cible
- Progetto orologio di base ESP32-S3 Matrice LED RGB Wi-Fi + Orologio NTP -1
- Progetto Orologio Internet con Matrice LED RGB ESP32-S3 - Colore Notte 3 con Data
- Progetto di orologio Internet con matrice LED RGB ESP32-S3 - 5 colori arcobaleno
- Progetto Orologio Internet con Matrice LED RGB ESP32-S3 - 4 Colori casuali
- Test della matrice LED RGB ESP32-S3 per impostazione RGB, GRB
/*
* =====================================================================================
* 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();
}
}
Cose di cui potresti avere bisogno
-
Amazon
-
eBay
-
AliExpressAcquista ESP32-S3 RGB Matrix su AliExpress (2)s.click.aliexpress.com
-
AliExpressAcquista la matrice RGB ESP32-S3 da AliExpresss.click.aliexpress.com
Risorse e riferimenti
-
Video
File📁
File Fritzing
-
esp32-S3-supermini-tht parte fritzing
esp32-S3-supermini-tht.fzpz0.02 MB