This tutorial is part of: Matrice LED RGB ESP32-S3
Proiect interesant de creat pentru aplicații distractive și practice folosind modulul ESP32-S3 RGB Matrix. Linkuri către alte videoclipuri sunt sub acest articol.
Proiect de ceas cu matrice LED RGB ESP32-S3 conectat la internet - 3 culori de noapte cu dată
Ceas Internet RGB NeoMatrix ESP32-S3 cu Luminozitate Automată Zi/Noapte
Acest proiect este un Ceas Internet cu Matrice RGB ESP32-S3 care ajustează automat luminozitatea ziua și noaptea. ESP32-S3 se conectează la Wi-Fi, sincronizează ora curentă de la un server NTP și defilează ora în format HH:MM pe o matrice RGB NeoMatrix 8×8. Ceasul suportă, de asemenea, culori RGB fixe sau ciclice pentru textul afișat.

Ce face acest ceas
După pornire, ESP32-S3 se conectează la rețeaua ta Wi-Fi și preia ora locală curentă de pe internet. Ora defilează lin pe matricea LED. Pe timpul nopții, afișajul se diminuează automat la o luminozitate mai scăzută, în timp ce ziua revine la un nivel mai luminos.
Biblioteci utilizate
Acest sketch folosește următoarele biblioteci:

#include <WiFi.h>
#include "time.h"
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
Instalează Adafruit NeoMatrix din Managerul de Biblioteci Arduino. Toate dependențele necesare, cum ar fi Adafruit GFX Library și Adafruit NeoPixel, vor fi instalate automat.

Configurare importantă pentru utilizator
SSID-ul și parola Wi-Fi (sensibile la majuscule)
Înlocuiește următoarele valori cu propriile tale credențiale Wi-Fi:

const char* WIFI_SSID = "WiFi";
const char* WIFI_PASSWORD = "passW0rd";
Important: SSID-urile Wi-Fi sunt sensibile la majuscule. Un SSID numit "Book" nu este același cu "book". Dacă majusculele nu se potrivesc exact, ESP32 nu se va putea conecta.
Server NTP, fus orar și ora de vară
Ceasul sincronizează ora folosind următorul server NTP:
const char* ntpServer = "pool.ntp.org";
Ora locală este calculată folosind aceste decalaje:
const long gmtOffset_sec = -5 * 3600;
const int daylightOffset_sec = 3600;
gmtOffset_secdefinește decalajul tău UTC în secundedaylightOffset_secadaugă o oră când ora de vară este activă (folosește0dacă nu este necesar)
Aceste valori sunt aplicate cu:
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
Luminozitate automată zi / noapte
Luminozitatea afișajului se schimbă automat în funcție de ora curentă:
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
Între 10 PM și 6 AM, luminozitatea matricei este redusă pentru a fi confortabilă în medii întunecate. În afara acestor ore, luminozitatea completă de zi este restabilită. Poți ajusta aceste valori pentru a se potrivi iluminării camerei tale.
Configurarea culorilor RGB
Culoarea textului ceasului este definită folosind valori RGB (Roșu, Verde, Albastru), unde fiecare canal variază de la 0 la 255. Mai multe culori pot fi stocate într-un array și ciclate automat:
uint8_t userColors[][3] = {
{17, 43, 171}, // Albastru deschis
{255, 0, 0}, // Roșu
{0, 255, 0}, // Verde
{255, 165, 0}, // Portocaliu
{255, 0, 255} // Magenta
};
Dacă useFixedColor este setat la true, ceasul folosește întotdeauna o singură culoare. Dacă este setat la false, culoarea se schimbă automat după fiecare defilare completă a orei.
Pentru a găsi rapid valorile RGB exacte pentru orice culoare, folosește instrumentul de selectare a culorilor RGB: Selector de Culori .
Afișarea orei și defilarea
Ora curentă este formatată ca HH:MM și stocată într-un mic buffer de caractere. Deoarece afișajul are doar 8 pixeli lățime, textul defilează lin de la dreapta la stânga. Odată ce ora părăsește complet afișajul, următoarea culoare (dacă este activată) este selectată pentru următoarea trecere.
Demonstrație
După încărcarea sketch-ului:
- ESP32-S3 se conectează la Wi-Fi
- Ora este sincronizată de pe internet
- Ora curentă defilează pe matricea RGB
- Luminozitatea se schimbă automat între zi și noapte
- Culoarea textului rămâne fixă sau se ciclizează în funcție de setările tale
Descărcări și linkuri
Codul sursă complet este furnizat mai jos în acest articol. Linkuri către piese, unelte și fișe tehnice sunt disponibile mai jos în acest articol.
This tutorial is part of: Matrice LED RGB ESP32-S3
- Proiect ESP32-S3 cu Matrice LED RGB 1 - Punct de bază
- Proiect ESP32-S3 cu Matrice LED RGB 2 - Text Derulant
- Proiect 3 cu matrice LED RGB ESP32-S3 - Text de pe telefonul mobil
- Proiect ESP32-S3 cu matrice LED RGB 4 - Punct de înclinare
- Proiect ESP32-S3 cu matrice LED RGB 5 - Săgeata mereu în sus
- Proiect Matrice LED RGB ESP32-S3 6 - Joc Cible
- Proiect de ceas Wi-Fi + NTP cu matrice LED RGB ESP32-S3 -1 Ceas de bază
- Proiect de ceas cu matrice LED RGB ESP32-S3 conectat la internet - Afișaj de oră și dată în 2 ceasuri multicolore
- Proiect de ceas internet cu matrice LED RGB ESP32-S3 - 5 culori curcubeu
- Proiect de ceas internet cu matrice LED RGB ESP32-S3 - 4 culori aleatorii
- 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();
}
}
Lucruri de care ai putea avea nevoie
-
Amazon
-
eBay
-
AliExpressPurchase ESP32-S3 RGB Matrix from AliExpresss.click.aliexpress.com
-
AliExpressPurchase ESP32-S3 RGB Matrix from AliExpress (2)s.click.aliexpress.com
Resurse și referințe
-
Video
-
Internă🎨 Color picker Toolrobojax.com
Fișiere📁
Fișier Fritzing
-
esp32-S3-supermini-tht fritzing part
esp32-S3-supermini-tht.fzpz0.02 MB