This tutorial is part of: Matrix-ka LED-ka ee ESP32-S3 RGB
Mashruuc xiiso leh oo loogu talagalay in lagu abuuro barnaamijyo xiiso leh oo wax ku ool ah iyadoo la adeegsanayo moduleka ESP32-S3 RGB Matrix. Xiriirinta fiidiyowyada kale waxay ku yaalliin maqaalkan.
Mashruuca Saacadda Shabakadda ee ESP32-S3 RGB LED Matrix - 4 Midab oo Random ah
Saatga Internet-ka ee ESP32-S3 oo leh Midabbo RGB Random ah
Mashruucani waa Saatga Internet-ka ee ESP32-S3 RGB Matrix kaas oo ku xidhma Wi-Fi-ga, isku waafajiya waqtiga maxalliga ah ee server-ka NTP, oo ku wareejiya waqtiga qaabka HH:MM guud ahaan NeoMatrix-ka RGB ee 8×8 ee ku dhex jira. Noocan, saacadaha, kolonka, iyo daqiiqadaha, mid kastaa wuxuu ku muujinayaa midabbo random ah oo la xusho wareeg kasta oo buuxa oo wareegga ah, taasoo abuuraysa bandhig saacadeed oo firfircoon oo ciyaar ah oo si joogto ah isu beddelaya.

Sida saacaddani u shaqeyso
Ka dib marka loo shido guddiga iyada oo loo marayo USB-C, ESP32-S3 wuxuu ku xidhmaa shabakaddaada Wi-Fi wuxuuna ka soo qaadaa waqtiga maxalliga ah ee hadda jira internetka. Waqtiga waxaa loo qaybiyaa saddex qaybood—saacadaha, kolonka, iyo daqiiqadaha—oo qayb kasta si gooni ah ayaa loo sawiraa matrix-ka RGB. Marka qoraalku si buuxda uga baxo shaashadda, midabbo random cusub ayaa loo xushaa wareegga xiga.
Maktabadaha la isticmaalay
Qoraalkani wuxuu isticmaalaa maktabadaha soo socda:

#include <WiFi.h>
#include "time.h"
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
Ku rakib Adafruit NeoMatrix ka Maareeyaha Maktabadda Arduino. Waxyaabaha lagama maarmaanka ah sida Adafruit GFX Library iyo Adafruit NeoPixel ayaa si toos ah loo rakibi doonaa.

Qaabaynta isticmaalaha ee muhiimka ah
Biyinta xogta Matrix-ka (matrix-ka RGB ee ku dhex jira)
In kasta oo matrix-ka RGB uu ku dhex jiro guddiga, haddana biyinta xogta waa in weli lagu qeexaa koodka:

#define MATRIX_PIN 14
GPIO 14 ayaa caadi ahaan loo isticmaalaa guddiyada matrix-ka RGB ee ESP32-S3. Haddii nooca guddigaagu uu isticmaalo biin ka duwan, cusboonaysii qiimahan si waafaqsan.
Wi-Fi SSID iyo password-ka (xarfaha waa muhiim)
Ku beddel xogta Wi-Fi-ga faahfaahinta shabakadaada gaarka ah:
const char* WIFI_SSID = "your WiFi SSID";
const char* WIFI_PASSWORD = "passW0rd";
Muhiim: Wi-Fi SSIDs waa xarfaha muhiim. SSID lagu magacaabo "Book" kuma eka "book". Haddii xarfaha weyni si sax ah ugu habboonaan waayaan, ESP32-S3 wuxuu ku guuldareysan doonaa inuu ku xidhmaado.
Server-ka NTP, aagga waqtiga, iyo badbaadinta maalinta
Isku-waafajinta waqtiga waxaa lagu sameeyaa iyada oo loo marayo server-ka NTP ee internetka:
const char* ntpServer = "pool.ntp.org";
Waqtiga maxalliga ah waxaa lagu xisaabiyaa iyada oo la isticmaalayo UTC iyo offsets-ka badbaadinta maalinta:
// Toronto-ish: UTC-5, plus 1 hour DST
const long gmtOffset_sec = -5 * 3600;
const int daylightOffset_sec = 3600;
gmtOffset_sec: Offset-ka UTC ee ilbiriqsiyo (ku hagaaji goobtaada)daylightOffset_sec: Isticmaal3600marka DST uu firfircoon yahay, ama0haddii kale
Qaabayntan waxaa lagu dabaqaa iyada oo la isticmaalayo:
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
Iftiinka maalinta / habeenka ee tooska ah
Saatadu waxay si toos ah u hagaajisaa iftiinka iyada oo ku saleysan saacadda hadda jirta:
const int DAY_BRIGHTNESS = 40;
const int NIGHT_BRIGHTNESS = 5;
const int NIGHT_START_HOUR = 22;
const int NIGHT_END_HOUR = 6;
Inta u dhaxaysa 10 PM iyo 6 AM, bandhigu wuu yaraadaa si loo yareeyo iftiinka xagjirka ah ee jawiga mugdiga ah. Inta lagu jiro saacadaha maalinta, matrix-ku wuxuu ku soo noqdaa iftiinka caadiga ah.
Hab-dhaqanka midabka RGB ee random
Liis horay loo qeexay oo midabbo RGB ah ayaa lagu kaydiyaa array, halkaas oo midab kastaa lagu qeexo iyada oo la isticmaalayo qiimaha Red, Green, iyo Blue ee u dhexeeya 0 ilaa 255:
uint8_t userColors[][3] = {
{255, 0, 0}, // Red
{0, 255, 0}, // Green
{0, 0, 255}, // Blue
{255, 165, 0}, // Orange
{255, 0, 255}, // Magenta
{0, 255, 255}, // Cyan
{255, 255, 0} // Yellow
};
Wareeg kasta oo buuxa oo wareegga ah:
- Tirada saacadaha waxaa loo qoondeeyaa midab random ah
- Kolonka wuxuu helaa midab random oo ka duwan
- Tirada daqiiqadaha waxay helaan midab random oo kale
Tani waxay soo saartaa isku-dhaf midabbo ah oo si joogto ah isu beddelaya kaas oo saacadda ka dhigaya mid muuqaal ahaan xiiso leh. Si aad u abuurto midabbo gaar ah oo adiga kuu gaar ah, waxaad isticmaali kartaa Qalabka Xulashada Midabka RGB: RGB Color Picker.
Mantaqa sawirista waqtiga
Waqtiga waxaa loo qaybiyaa saddex qaybood:
- Saacadaha:
HH - Kolonka:
: - Daqiiqadaha:
MM
Qayb kasta si gooni ah ayaa loo sawiraa si ay u yeelato midabkeeda gaarka ah, halka dhammaan qaybuhu ay si wada jir ah u dhaqaaqaan si ay u sameeyaan animation-ka wareegga ah ee siman ee 8×8 bandhiga.
Abuurista midabka random
Si loo hubiyo in midabku random yahay, qoraalku wuxuu ku beeraa generator-ka nambarka random marka la bilaabayo iyada oo la isticmaalayo biin analog ah oo aan ku xidhnayn:
randomSeed(analogRead(0));
Tani waxay hubinaysaa in isku-dhafka midabbadu uu ka duwan yahay markasta oo la shido iyo wareeg kasta oo wareegga ah.
Muuujin
Ka dib marka la soo geliyo qoraalka oo guddiga loo shido iyada oo loo marayo USB-C:
- ESP32-S3 wuxuu ku xidhmaa shabakadaada Wi-Fi
- Waqtiga waxaa laga soo waafajiyaa internetka
- Waqtigu wuxuu ku wareegayaa qaabka
HH:MM - Saacadaha, kolonka, iyo daqiiqadaha waxay u beddelaan midabbo random ah wareeg kasta
- Bandhigu si toos ah ayuu u yaraadaa habeenkii
Soo dejinta iyo linkiyada
Koodhka isku dhammaystiran ee ilaha ayaa hoos ku qoran maqaalkan. Qalabka waxtarka leh iyo tixraacyada ayaa hoos ku xiran maqaalkan.
This tutorial is part of: Matrix-ka LED-ka ee ESP32-S3 RGB
- Mashruuca LED Matrix-ka RGB ee ESP32-S3 1- Dhibic Aasaasi ah
- Mashruuca LED Matrix RGB ee ESP32-S3 2 - Qoraal Guurguura
- Mashruuca ESP32-S3 RGB LED Matrix Project 3 - Qoraal ka yimid taleefanka gacanta
- Mashruuca LED Matrix RGB ee ESP32-S3 4 - Dhibicda leexinta
- Mashruuca Matrix-ka LED-ka RGB ee ESP32-S3 5 - Fallaar had iyo jeer kor u taagan
- Mashruuca LED Matrix RGB ee ESP32-S3 6 - Ciyaarta Cible
- Mashruucda Saacadda NTP + Wi-Fi Matrix LED RGB ee ESP32-S3 -1 Saacad Aasaasi ah
- Mashruuca Saacadda Shabakadda ee ESP32-S3 RGB LED Matrix - 2 Saacadood oo midabbo kala duwan leh oo Muujinaya Waqtiga & Taariikhda
- Mashruuca Saacadda Shabakadda ee LED Matrix RGB ee ESP32-S3 - 3 Midab Habeen ah oo leh Taariikh
- Mashruuca Saacadda Shabakadda LED Matrix RGB ee ESP32-S3 - 5 Midabka Qaanso Roobaadka
- ESP32-S3 RGB LED Matrix test for RGB, GRB setting
/*
* =====================================================================================
* ESP32-S3 INTERNET RGB CLOCK (8x8 Matrix) - Project 4- Random Color
* =====================================================================================
watch video https://youtube.com/shorts/4iWjLiD7fS8
📚⬇️ Download and resource page https://robojax.com/RJT843
* 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).
* =====================================================================================
*/
/*
* =====================================================================================
* ESP32-S3 INTERNET CLOCK - MULTI-COLOR ELEMENTS
* =====================================================================================
* Each part of the time (HH : MM) gets a different random color from your list.
* Colors only change once the full scroll cycle is finished.
* =====================================================================================
*/
#include <WiFi.h>
#include "time.h"
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
#define MATRIX_PIN 14
// --- CONFIGURATION ---
const int DAY_BRIGHTNESS = 40;
const int NIGHT_BRIGHTNESS = 5;
const int NIGHT_START_HOUR = 22;
const int NIGHT_END_HOUR = 6;
uint8_t userColors[][3] = {
{255, 0, 0}, // Red
{0, 255, 0}, // Green
{0, 0, 255}, // Blue
{255, 165, 0}, // Orange
{255, 0, 255}, // Magenta
{0, 255, 255}, // Cyan
{255, 255, 0} // Yellow
};
int totalColors = sizeof(userColors) / sizeof(userColors[0]);
// Variables to store the current random color indices
int hourColorIdx = 0;
int colonColorIdx = 1;
int minColorIdx = 2;
// --- GLOBALS ---
Adafruit_NeoMatrix matrix(8, 8, MATRIX_PIN,
NEO_MATRIX_TOP + NEO_MATRIX_LEFT +
NEO_MATRIX_ROWS + NEO_MATRIX_PROGRESSIVE,
NEO_RGB + NEO_KHZ800);
char hourText[3], minText[3];
int16_t scrollX = 8;
unsigned long lastScrollMs = 0;
const uint16_t scrollIntervalMs = 100;
// 👇 REPLACE these with your real home WiFi name & password
const char* WIFI_SSID = "your WiFi SSID";
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
void updateTimeParts() {
struct tm timeinfo;
if (!getLocalTime(&timeinfo)) return;
snprintf(hourText, sizeof(hourText), "%02d", timeinfo.tm_hour);
snprintf(minText, sizeof(minText), "%02d", timeinfo.tm_min);
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);
int x = scrollX;
// 1. Draw Hours
matrix.setTextColor(matrix.Color(userColors[hourColorIdx][0], userColors[hourColorIdx][1], userColors[hourColorIdx][2]));
matrix.setCursor(x, 0);
matrix.print(hourText);
x += 12; // Move 12 pixels (2 digits * 6px)
// 2. Draw Colon
matrix.setTextColor(matrix.Color(userColors[colonColorIdx][0], userColors[colonColorIdx][1], userColors[colonColorIdx][2]));
matrix.setCursor(x, 0);
matrix.print(":");
x += 6; // Move 6 pixels
// 3. Draw Minutes
matrix.setTextColor(matrix.Color(userColors[minColorIdx][0], userColors[minColorIdx][1], userColors[minColorIdx][2]));
matrix.setCursor(x, 0);
matrix.print(minText);
matrix.show();
scrollX--;
// Total width is roughly 30 pixels (HH=12, :=6, MM=12)
if (scrollX < -30) {
scrollX = matrix.width();
// Pick NEW random colors for the next cycle
hourColorIdx = random(0, totalColors);
colonColorIdx = random(0, totalColors);
minColorIdx = random(0, totalColors);
}
}
void setup() {
Serial.begin(115200);
// Seed the random generator using an unconnected analog pin
randomSeed(analogRead(0));
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) delay(500);
// 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);
}
void loop() {
if (millis() % 1000 == 0) updateTimeParts();
if (millis() - lastScrollMs >= scrollIntervalMs) {
lastScrollMs = millis();
scrollTime();
}
}
Kheyraadka & Tixraacyada
-
Fiidiyow
-
Gudaha🎨 Color picker Toolrobojax.com
Faylasha📁
Faylka Fritzing
-
esp32-S3-supermini-tht fritzing part
esp32-S3-supermini-tht.fzpz0.02 MB