Casharradan waa qayb ka mid ah: 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 - 2 Saacadood oo midabbo kala duwan leh oo Muujinaya Waqtiga & Taariikhda
SaaS-ga S3 RGB NeoMatrix Internet Clock oo Muujinaya Waqtiga & Taariikhda
Mashruucani waa saacad Internet ah oo la xoojiyay oo ah ESP32-S3 RGB Matrix, kaas oo aan kaliya muujinayo waqtiga hadda jira, laakiin sidoo kale si joogto ah u muujiya taariikhda. ESP32-S3 wuxuu ku xidhmaa Wi-Fi, wuxuu waqtiga kala soo qaadaa server-ka NTP, wuxuuna ku duubaa HH:MM ama taariikhda (tusaale ahaan SEP 21) 8×8 RGB NeoMatrix. Muujinta waxay taageertaa xakamaynta iftiinka maalin/habeen oo toos ah iyo midabada RGB ee la habayn karo.

Waxa saacaddani qabato
Ka dib marka uu ku xidhmao shabakaddaada Wi-Fi, ESP32-S3 wuxuu ka soo qaadaa waqtiga maxalliga ah ee hadda jira internetka. Saacaddu waxay caadi ahaan ku duubtaa waqtiga, laakiin wakhti go'an ka dib waxay u beddeshaa inay muujiso taariikhda. Midabka qoraalka wuxuu noqon karaa mid go'an ama si toos ah u wareegi kara dhowr midab oo isticmaaluhu qeexay. Iftiinka si toos ah ayaa loo yareeyaa habeenkii si muujintu u fududaato indhaha.
Maktabadaha la isticmaalay
Qoraalkani wuxuu ku xiran yahay maktabadahan soo socda:

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

Qaabaynta isticmaalaha ee muhiimka ah
Wi-Fi SSID iyo password (xarfaha waa muhiim)
Waa inaad ku beddeshaa macluumaadka Wi-Fi ee adiga kuu gaarka ah:

const char* WIFI_SSID = "WiFi";
const char* WIFI_PASSWORD = "passW0rd";
Muhiim: Wi-Fi SSID-yada xarfaha waa muhiim. Tusaale ahaan, SSID lagu magacaabo "Book" kuma eka "book". Haddii xarfaha weyn/yaryar aan si sax ah u ekaan, ESP32 wuxuu ku guuldareystaa inuu ku xidhmao.
NTP server, time zone, iyo daylight saving
Saacaddu waxay isticmaashaa server-ka waqtiga internetka:
const char* ntpServer = "pool.ntp.org";
Waqtiga maxalliga ah waxaa lagu xisaabiyaa iyadoo la isticmaalayo offsets-yadan:
const long gmtOffset_sec = -5 * 3600;
const int daylightOffset_sec = 3600;
gmtOffset_sec: Offset-kaaga UTC ee ilbiriqsi (tusaale: UTC-5 =-5 * 3600)daylightOffset_sec: Isticmaal3600DST ama0haddii DST aan la isticmaalin
Qaabayntan waxaa lagu dabaqaa iyadoo la isticmaalayo:
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
Xakamaynta iftiinka (maalin / habeen)
Mashruucani wuxuu si toos ah u hagaajiyaa iftiinka iyadoo ku xiran saacadda maalinta:
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, iftiinka waa la yareeyaa si muujintu uga yaraato qalalaasaha jawiga mugdiga ah. Waxaad hagaajin kartaa qiimahan si ay ugu habboonaato dookhaaga.
Qaabaynta midabka RGB
Saacaddu waxay taageertaa labada qaab: midab go'an iyo wareegga midabka tooska ah. Midabada RGB ee isticmaaluhu qeexay waxaa lagu kaydiyaa 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
};
Midab kastaa wuxuu isticmaalaa qiimaha RGB (Red, Green, Blue) oo u dhexeeya 0 ilaa 255. Adigoo beddelaya lambarradan, waxaad abuuri kartaa midab kasta oo muujinta ah. Haddii useFixedColor lagu dejiyo true, saacaddu had iyo jeer waxay isticmaashaa hal midab. Haddii lagu dejiyo false, midabku si toos ah ayuu u beddelmaa ka dib markii duubista oo dhammaatay.
Si aad si dhakhso leh u hesho qiimaha RGB ee saxda ah ee midab kasta oo aad rabto, isticmaal qalabka RGB Color Picker Color Picker .
Qaabaynta waqtiga iyo taariikhda
Waqtiga waxaa loo qaabeeyaa HH:MM waxaana lagu kaydiyaa buffer-ka xarfaha yar. Taariikhda waxaa loo qaabeeyaa sida xarfo waaweyn oo ah sida SEP 21. Muujintu si toos ah ayay u beddeshaa inta u dhaxaysa waqtiga iyo taariikhda wakhti go'an.
Nidaamka duubista ee muujinta 8×8
Sababtoo ah matrix-ka 8×8 aad ayuu u yar yahay inuu muujiyo qoraalka oo dhan hal mar, qoraalku wuxuu si toos ah u duubaa qoraalka jiif ahaan. Marka qoraalku si buuxda uga baxo muujinta, midabka waa la cusbooneysiiyaa waxaana nuxurku u beddelmaa waqtiga iyo taariikhda marka loo baahdo.
Muuujin
Ka dib markaad soo geliso qoraalka:
- ESP32 wuxuu ku xidhmaa Wi-Fi
- Waqtiga waxaa laga soo qaadaa internetka
- Waqtiga hadda jira wuxuu ku duubmaa matrix-ka
- Taariikhdu waxay soo baxdaa si joogto ah
- Iftiinka si toos ah ayuu u hagaajiyaa maalin iyo habeen
Soo dejinta iyo linkiyada
Koodhka dhammaystiran ee asalka ah ayaa hoos ku qoran maqaalkan. Linkiyada qaybaha, qalabka, iyo xaashida xogta ayaa sidoo kale hoos ka heli kara maqaalkan.
Casharradan waa qayb ka mid ah: 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 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
- Mashruuca Saacadda Shabakadda ee ESP32-S3 RGB LED Matrix - 4 Midab oo Random ah
- ESP32-S3 RGB LED Matrix test for RGB, GRB setting
/*
* =====================================================================================
* 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();
}
}
Waad u baahan tahay
-
Amaazon
-
eBay
-
AliExpressPurchase ESP32-S3 RGB matrix from AliExpresss.click.aliexpress.com
-
AliExpressPurchase ESP32-S3 RGB matrix from AliExpress (2)s.click.aliexpress.com
Kheyraadka & Tixraacyada
-
Fiidiyow
Faylasha📁
Faylka Fritzing
-
esp32-S3-supermini-tht fritzing part
esp32-S3-supermini-tht.fzpz0.02 MB