This tutorial is part of: ESP32-S3 Matrice ya LED RGB
Projet cool pona ko créer pona ba applications ya esengo pe ya pratique en utilisant module ESP32-S3 RGB Matrix. Ba liens ya ba vidéos misusu ezali na se ya article oyo.
Projet ya Monganga ya Internet ya ESP32-S3 RGB LED Matrix - 5 Loni ya Rainbow
Móti ya Ngonga ya Internet ya ESP32-S3 na Lisé ya Kala ya Ngondo
Projɛ́ oyo ezalí ngonga ya Internet ya ESP32-S3 na RGB Matrix oyo esangani na Wi-Fi, esangisi ngonga ya mboka na serveur ya NTP, mpe epakolaka ngonga na format ya HH:MM na kati ya 8×8 RGB NeoMatrix oyo ezalí na kati. Na kokeseni na ba versions ya ba couleurs solides to aléatoires, ngonga oyo esalelaka lisé ya kala ya ngondo oyo ezalí pete, epai epai na caractère nyonso ezalí komibongola na kati ya spectre ya RGB ntango ezalí kopakola. Ngonga yango mpe emonisaka mokolo na ntango mosusu mpe ebongolaka pole ya mokolo na butu na ndenge ya auto.

Ndenge ngonga oyo esalaka
Ntango esili kopelama na USB-C, ESP32-S3 esangisami na réseau ya Wi-Fi na yo mpe ezwi ngonga ya mboka oyo ezalí na internet. Écran yango epakolaka ngonga na ndenge ya libela, kasi na intervalle oyo ezwami, ebongolaka mpo na komonisa mokolo. Ngonga mpe mokolo nyonso mibale emonisamaka na lisé ya kala ya ngondo oyo ezalí dynamique, mpe esalaka éclat ya bomoi mpe animation na kati ya matrice ya 8×8.
Ba bibliothèques oyo esalelami
Sketch yango etieli motuya na ba bibliothèques oyo:

#include <WiFi.h>
#include "time.h"
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
Tiya Adafruit NeoMatrix na esaleli ya Arduino Library Manager. Ba dépendances na yango, na ndenge ya Adafruit GFX Library mpe Adafruit NeoPixel, ekotiama na ndenge ya auto.

Configuration ya utilisateur oyo ezali na tina
Pin ya ba données ya matrice (matrice ya RGB oyo ezalí na kati)
Atako matrice ya RGB ezalí na board ya ESP32-S3, pin ya ba données esengeli kutu kolimbolama na kati ya code:

#define MATRIX_PIN 14
GPIO 14 esalelamaka mingi na ba boards ya ESP32-S3 na matrice ya RGB. Soki board na yo ezalí na pin mosusu, bongola valeur oyo.
SSID mpe mot de passe ya Wi-Fi (ezalí na ba lettres mincules mpe majuscules)
Bongola ba identifiants ya Wi-Fi na ba détails ya réseau na yo moko:
const char* WIFI_SSID = "WIFI na yo";
const char* WIFI_PASSWORD = "passW0rd";
Likambo ya tina: Ba SSID ya Wi-Fi ezalí na ba lettres mincules mpe majuscules. SSID oyo ebengami "Book" ezalí ndenge moko te na "book". Soki ba lettres mincules mpe majuscules esangani te na ndenge ya solo, ESP32-S3 ekokoka te kosangisa.
Serveur ya NTP, zone ya ngonga, mpe changement ya ngonga ya été
Ngonga yango esangisaka ngonga na esaleli ya serveur ya NTP ya internet:
const char* ntpServer = "pool.ntp.org";
Ngonga ya mboka etongamaka na ba offsets oyo:
// Toronto-ish: UTC-5, plus 1 heure ya DST
const long gmtOffset_sec = -5 * 3600;
const int daylightOffset_sec = 3600;
gmtOffset_sec: Offset ya UTC na secondes (mbanda: UTC-5 =-5 * 3600)daylightOffset_sec: Salela3600soki DST ezalí actif, to0soki esalelami te
Ba valeurs oyo etiamaka na esaleli ya:
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
Pole ya mokolo / butu na ndenge ya auto
Pole ebongolamaka na ndenge ya auto kolandana na heure ya sika:
const int DAY_BRIGHTNESS = 40;
const int NIGHT_BRIGHTNESS = 5;
const int NIGHT_START_HOUR = 22;
const int NIGHT_END_HOUR = 6;
Na kati ya 10 PM mpe 6 AM, matrice yango ekitisamaka mpo na kokitisa éclat. Na ntango ya mokolo, pole ya libela ezongisamaka.
Lisé ya kala ya ngondo
Projɛ́ oyo esalelaka roue ya ba couleurs ya RGB ya classique mpo na kosala ba couleurs ya ngondo oyo ezalí pete. Caractère nyonso etiamaka na offset ya couleur oyo ekokani moke, mpe ba couleurs ebongolamaka na ntango, mpe esalaka animation ya ngondo oyo ezalí kotiola.
// Esaleli mpo na kosala ba couleurs ya ngondo
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);
}
Ntango texte ezalí kopakola, caractère nyonso ekotaka na spectre ya RGB, mpe esalaka lisé ya ngondo oyo ezalí kotambola, oyo emonanaka malamu mingi na écran ya 8×8.
Ndenge ngonga mpe mokolo emonisamaka
Ngonga yango ebombaka ba buffers ya ngonga mpe ya mokolo na ndenge ya kokeseni:
- Ngonga:
HH:MM - Mokolo:
MMM DD(mbandaJAN 08)
Mokolo emonisamaka na intervalle oyo ezwami:
const uint32_t dateIntervalMs = 60000; // Monisa mokolo na mbala na mbala na minute moko
Na suka ya cycle nyonso ya kopakola, code yango ekataka soki ekokoba na ngonga to ebongola na mokolo.
Logique ya kopakola na matrice ya 8×8
Lokola écran yango ezalí na largeur ya ba pixels 8 kaka, texte epakolamaka na ndenge ya pete longwa na loboko ya mobali tii na loboko ya mwasi. Ntango texte esili kobima na écran, curseur ezwamaka lisusu mpe contenu oyo elandi (ngonga to mokolo) etiamaka mpo na passage oyo elandi.
Démonstration
Nsima ya kotia sketch mpe kopelisa board na USB-C:
- ESP32-S3 esangisami na réseau ya Wi-Fi na yo
- Ngonga esangisamaka longwa na internet
- Ngonga epakolamaka na format ya
HH:MM - Mokolo emonanaka na mbala na mbala
- Texte nyonso emonisamaka na lisé ya ngondo oyo ezalí animé mpe pete
- Écran yango ekitisamaka na butu mpe epelamaka na mokolo na ndenge ya auto
Ba téléchargements mpe ba liens
Mokanda mobimba ya code ya source ezwami na nse ya lisolo oyo. Bileko ya mosala mpe ba références, na ndenge ya RGB Color Picker, ezali mpe na ba liens na nse ya lisolo oyo.
This tutorial is part of: ESP32-S3 Matrice ya LED RGB
- Projet ESP32-S3 Matrice LED RVB 1- Point de base
- Projet ESP32-S3 Matrice LED RVB 2 - Texte défilant
- Mokano ya ESP32-S3 RGB LED Matrix Projɛ́ 3 - Mokanda na phone ya mbɔ́kɔ
- ESP32-S3 RGB LED Matrix Project 4 - Tilt dot
- Projet ESP32-S3 Matrice LED RVB 5 - Flèche toujours vers le haut
- Projet ESP32-S3 Matrice LED RVB 6 - Jeu Cible
- Mokano ya ESP32-S3 RGB LED Matrix Wi-Fi + NTP Time Clock -1 Saa ya Liboso
- Projet Horloge Internet à Matrice LED RGB ESP32-S3 - Affichage de l'Heure et de la Date en 2 Horloges Multicolores
- Projet ya Saa ya Intanɛti ya ESP32-S3 RGB LED Matrix - 3 Langi ya Butú elongo na Mokolo
- Mosala ya ESP32-S3 RGB LED Matrix Internet Clock - Loni ya balabala ya 4
- ESP32-S3 RGB LED Matrix test for RGB, GRB setting
/*
* =====================================================================================
* ESP32-S3 CLOCK - RAINBOW DATE & SOLID TIME - Project 5- RAINBOW MODE
* =====================================================================================
watch video https://youtube.com/shorts/4iWjLiD7fS8
📚⬇️ Download and resource page https://robojax.com/RJT842
* Author: Gemini (AI Thought Partner) & Ahmad Shamshiri (Robojax.com)
* Date: 07 Jan 2026
* =====================================================================================
* ESP32-S3 INTERNET RGB CLOCK - RAINBOW MODE
* * FEATURES:
* - Full Rainbow: Time and Date use flowing rainbow colors.
* - Auto-Brightness: Dims at night (22:00 to 06:00).
* - Custom WiFi: Robust connection logic with retries.
* =====================================================================================
*/
#include <WiFi.h>
#include "time.h"
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
#define MATRIX_PIN 14
// 👇 REPLACE these with your real home WiFi name & password
const char* WIFI_SSID = "your WIFI";
const char* WIFI_PASSWORD = "passW0rd";
// NTP (time) server
const char* ntpServer = "pool.ntp.org";
// Toronto-ish: UTC-5, plus 1 hour DST.
const long gmtOffset_sec = -5 * 3600; // -5 hours
const int daylightOffset_sec = 3600; // +1 hour for DST
// --- BRIGHTNESS CONFIGURATION ---
const int DAY_BRIGHTNESS = 40;
const int NIGHT_BRIGHTNESS = 5;
const int NIGHT_START_HOUR = 22;
const int NIGHT_END_HOUR = 6;
// --- INTERVALS & TRACKING ---
unsigned long lastDateShowMs = 0;
const uint32_t dateIntervalMs = 60000; // Show date every 1 minute
bool isShowingDate = false;
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;
unsigned long lastScrollMs = 0;
const uint16_t scrollIntervalMs = 100;
unsigned long lastTimeUpdateMs = 0;
// 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);
}
void updateClockData() {
struct tm timeinfo;
if (!getLocalTime(&timeinfo)) return;
// Update Time and Date strings
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]);
// Handle Night Dimming
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);
int len = strlen(currentDisplayText);
int16_t x = scrollX;
// Draw each character with a shifting rainbow color
for (int i = 0; i < len; i++) {
uint8_t colorPos = (uint8_t)((i * 30) + (millis() / 5));
matrix.setTextColor(Wheel(colorPos));
matrix.setCursor(x + (i * 6), 0);
matrix.print(currentDisplayText[i]);
}
matrix.show();
scrollX--;
int16_t textWidth = len * 6;
if (scrollX < -textWidth) {
scrollX = matrix.width();
// Switch between Date and Time at end of cycle
if (millis() - lastDateShowMs > dateIntervalMs) {
strcpy(currentDisplayText, dateText);
lastDateShowMs = millis();
isShowingDate = true;
} else {
strcpy(currentDisplayText, timeText);
isShowingDate = false;
}
}
}
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("\nESP32-S3 Rainbow Clock Initializing...");
// Connect to WiFi
Serial.print("Connecting to WiFi: ");
Serial.println(WIFI_SSID);
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
int retries = 0;
while (WiFi.status() != WL_CONNECTED && retries < 30) { // ~15s timeout
delay(500);
Serial.print(".");
retries++;
}
Serial.println();
if (WiFi.status() != WL_CONNECTED) {
Serial.println("WiFi connection FAILED");
} else {
Serial.print("WiFi connected. IP: ");
Serial.println(WiFi.localIP());
}
// Configure time via NTP
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
Serial.println("Waiting for time...");
delay(2000); // small wait for initial sync
matrix.begin();
matrix.setTextWrap(false);
matrix.setBrightness(DAY_BRIGHTNESS);
updateClockData();
strcpy(currentDisplayText, timeText); // Load initial time
}
void loop() {
unsigned long now = millis();
// Update time digits and check brightness every second
if (now - lastTimeUpdateMs >= 1000) {
lastTimeUpdateMs = now;
updateClockData();
}
// Handle the scrolling animation
if (now - lastScrollMs >= scrollIntervalMs) {
lastScrollMs = now;
scrollDisplay();
}
}
Mokili na bisika
-
Vidéo
-
Interno🎨 Color picker Toolrobojax.com
Fichiers📁
Fritzing File
-
esp32-S3-supermini-tht fritzing part
esp32-S3-supermini-tht.fzpz0.02 MB