دا ټیوټوریل برخه ده له: ESP32-S3 RGB LED Matrix
د ESP32-S3 RGB Matrix ماډل په کارولو سره د ساتیرۍ او عملي غوښتنلیکونو لپاره د جوړولو عالي پروژه. د نورو ویډیوګانو لینکونه د دې مقالې لاندې دي.
د ESP32-S3 RGB LED میټرکس انټرنیټ ساعت پروژه - ۲ ساعت څو رنګه وخت او نېټه ښودنه
د ESP32-S3 RGB NeoMatrix انټرنیټ ساعت د وخت او نېټې نندارې سره
دا پروژه یو پرمختللی ESP32-S3 RGB میټرکس انټرنیټ ساعت دی چې نه یوازې اوسنی وخت ښیې، بلکې په دورهيي ډول نېټه هم ښیې. ESP32-S3 له Wi-Fi سره نښلېږي، د NTP سرور څخه وخت همغږي کوي، او یا HH:MM یا نېټه (د مثال په توګه SEP 21) د 8×8 RGB NeoMatrix په اوږدو کې ښوئي. نندارې د ورځې/شپې اتوماتیک روښانتیا کنټرول او دودیز RGB رنګونه ملاتړ کوي.

دا ساعت څه کوي
ستاسو د Wi-Fi شبکې سره له نښلولو وروسته، ESP32-S3 له انټرنیټ څخه اوسنی سیمهییز وخت ترلاسه کوي. ساعت په عادي ډول وخت ښوئي، خو په ټاکلي وقفه کې د نېټې ښودلو ته اوړي. د متن رنګ کولی شي یو ثابت رنګ ته ټاکل شوی وي یا په اتوماتيک ډول د څو کارونکي تعریف شویو رنګونو ترمنځ بدل شي. روښانتیا په شپه کې په اتوماتيک ډول کمېږي ترڅو ننداره د سترګو لپاره اسانه وي.
کارول شوي کتابتونونه
دا سکیچ په لاندې کتابتونونو پورې اړه لري:

#include <WiFi.h>
#include "time.h"
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
د Arduino Library Manager څخه Adafruit NeoMatrix نصب کړئ. ټول اړین انحصارونه لکه Adafruit GFX Library او Adafruit NeoPixel په اتوماتيک ډول نصب به شي.

مهم کارونکي تنظیمات
Wi-Fi SSID او پاسورډ (د لویو او وړو تورو توپیر سره)
تاسو باید د Wi-Fi اسناد د خپلې شبکې معلوماتو سره بدل کړئ:

const char* WIFI_SSID = "WiFi";
const char* WIFI_PASSWORD = "passW0rd";
مهم: د Wi-Fi SSIDs د لویو او وړو تورو توپیر لري. د مثال په توګه، یو SSID چې نوم یې "Book" دی د "book" سره یو شان نه دی. که لوی او وړي توري په سمه توګه سره سمون ونه خوري، ESP32 به له نښلولو پاتې شي.
د NTP سرور، وخت زون، او د ورځې رڼا سپما
ساعت د انټرنیټ وخت سرور کاروي:
const char* ntpServer = "pool.ntp.org";
سیمهییز وخت د دې آفسیټونو په کارولو سره محاسبه کېږي:
const long gmtOffset_sec = -5 * 3600;
const int daylightOffset_sec = 3600;
gmtOffset_sec: ستاسو د UTC آفسیټ په ثانیو کې (مثال: UTC-5 =-5 * 3600)daylightOffset_sec: د DST لپاره3600وکاروئ یا که DST نه کارول کېږي0
دا تنظیمات د لاندې په کارولو سره پلي کېږي:
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
د روښانتیا کنټرول (ورځ / شپه)
دا پروژه په اتوماتيک ډول د ورځې د ساعت پر بنسټ روښانتیا تنظیموي:
const int DAY_BRIGHTNESS = 40;
const int NIGHT_BRIGHTNESS = 5;
const int NIGHT_START_HOUR = 22;
const int NIGHT_END_HOUR = 6;
د ماښام له 10 بجو څخه تر سهار 6 بجو پورې، روښانتیا کمېږي ترڅو ننداره په تیاره چاپېریال کې لږ ګډوډونکې وي. تاسو کولی شئ دا ارزښتونه د خپلې خوښې سره سم تنظیم کړئ.
د RGB رنګ تنظیمات
ساعت د ثابت رنګ حالت او اتوماتیک رنګ بدلون دواړه ملاتړ کوي. د کارونکي تعریف شوي RGB رنګونه په یوه ارې کې ساتل کېږي:
uint8_t userColors[][3] = {
{17, 43, 171}, // روښانه نیلي
{255, 0, 0}, // سور
{0, 255, 0}, // شین
{255, 165, 0}, // نارنجي
{255, 0, 255} // ګلابي
};
هر رنګ د RGB (سور، شین، نیلي) ارزښتونه کاروي چې له 0 څخه تر 255 پورې وي. د دې شمېرو په بدلولو سره، تاسو کولی شئ د نندارې لپاره تقریباً هر رنګ جوړ کړئ. که useFixedColor په true وټاکل شي، ساعت تل یو رنګ کاروي. که په false وټاکل شي، رنګ د هر بشپړ سکرول وروسته په اتوماتيک ډول بدلېږي.
د هر هغه رنګ لپاره چې غواړئ دقیق RGB ارزښتونه ژر پیدا کړئ، د RGB رنګ غوره کوونکی وسیله وکاروئ رنګ غوره کوونکی .
د وخت او نېټې بڼه
وخت د HH:MM په بڼه جوړېږي او په یوه کوچني کرکټر بفر کې ساتل کېږي. نېټه د لویو تورو په بڼه جوړېږي لکه SEP 21. ننداره په اتوماتيک ډول په ټاکلي وقفه کې د وخت او نېټې ترمنځ بدلېږي.
د 8×8 نندارې پر سکرول منطق
ځکه چې د 8×8 میټرکس د ټول متن په یو ځل ښودلو لپاره ډېر کوچنی دی، سکیچ متن په افقي ډول ښوئي. یوځل چې متن په بشپړه توګه له نندارې ووځي، رنګ تازه کېږي او کله چې اړتیا وي محتوا د وخت او نېټې ترمنځ بدلېږي.
څرګندونه
د سکیچ له اپلوډ وروسته:
- ESP32 له Wi-Fi سره نښلېږي
- وخت له انټرنیټ څخه همغږي کېږي
- اوسنی وخت د میټرکس په اوږدو کې ښوئي
- نېټه په دورهيي ډول ښکاره کېږي
- روښانتیا په اتوماتيک ډول د ورځې او شپې لپاره تنظیمېږي
ډاونلوډونه او لینکونه
بشپړ سرچینه کوډ د دې مقالې لاندې چمتو شوی دی. د پرزو، وسیلو، او ډیټاشیټونو لینکونه هم د دې مقالې لاندې شتون لري.
دا ټیوټوریل برخه ده له: ESP32-S3 RGB LED Matrix
- د ESP32-S3 RGB LED میټرکس پروژه ۱ - بنسټیز ډاټ
- د ESP32-S3 RGB LED میټرکس پروژه ۲ - سکرول کېدونکی متن
- د ESP32-S3 RGB LED میټرکس پروژه ۳ - د ګرځنده تلیفون څخه متن
- ESP32-S3 RGB LED میټرکس پروژه ۴ - ټیلټ ډاټ
- د ESP32-S3 RGB LED میټرکس پروژه ۵ - تل پورته تیر
- د ESP32-S3 RGB LED میټرکس پروژه ۶ - د هدف لوبه
- د ESP32-S3 RGB LED میټرکس وای-فای + NTP وخت ساعت پروژه -1 اساسي ساعت
- د ESP32-S3 RGB LED میټرکس انټرنیټ ساعت پروژه - ۳ د شپې رنګونه د نیټې سره
- د ESP32-S3 RGB LED میټرکس انټرنیټ ساعت پروژه - 5 د رینبو رنګ
- د ESP32-S3 RGB LED میټرکس انټرنیټ ساعت پروژه - ۴ تصادفي رنګونه
- 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();
}
}
هغه شیان چې تاسو ورته اړتیا لرئ
-
امازون
-
ای بی
-
علی ایکسپریسPurchase ESP32-S3 RGB matrix from AliExpresss.click.aliexpress.com
-
علی ایکسپریسPurchase ESP32-S3 RGB matrix from AliExpress (2)s.click.aliexpress.com
سرچینې او حوالې
-
ویډیو
فایلونه📁
Fritzing فایل
-
esp32-S3-supermini-tht fritzing part
esp32-S3-supermini-tht.fzpz0.02 MB