دا ټیوټوریل برخه ده له: ESP32-S3 RGB LED Matrix
د ESP32-S3 RGB Matrix ماډل په کارولو سره د ساتیرۍ او عملي غوښتنلیکونو لپاره د جوړولو عالي پروژه. د نورو ویډیوګانو لینکونه د دې مقالې لاندې دي.
د ESP32-S3 RGB LED میټرکس انټرنیټ ساعت پروژه - 5 د رینبو رنګ
د ESP32-S3 انټرنیټ ساعت د رینبو رنګ اغېز سره
دا پروژه د ESP32-S3 RGB میټرکس انټرنیټ ساعت دی چې Wi-Fi سره نښلوي، د NTP سرور څخه محلي وخت همغږي کوي، او وخت په HH:MM بڼه کې د جوړ شوي 8×8 RGB NeoMatrix په اوږدو کې سکرول کوي. د جامد یا تصادفي رنګ نسخو برعکس، دا ساعت یو نرم رینبو رنګ اغېز کاروي، چیرې چې هر توری په دوامداره توګه د RGB طیف له لارې بدلیږي لکه څنګه چې سکرول کیږي. ساعت په دوره یي ډول نیټه هم ښیې او په اتوماتيک ډول د ورځې او شپې ترمنځ روښانتیا تنظیموي.

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

#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، په اتوماتيک ډول نصب به شي.

مهمه کاروونکي تنظیم
د میټرکس ډیټا پن (جوړ شوی RGB میټرکس)
که څه هم RGB میټرکس د ESP32-S3 بورډ سره تړلی دی، د ډیټا پن باید لاهم په کوډ کې تعریف شي:

#define MATRIX_PIN 14
GPIO 14 په عمومي ډول د ESP32-S3 RGB میټرکس بورډونو کې کارول کیږي. که ستاسو د بورډ ډول مختلف پن کاروي، دا ارزښت تازه کړئ.
د Wi-Fi SSID او پاسورډ (د لویو او وړو تورو توپیر سره)
د Wi-Fi اسناد د خپل شبکې جزیاتو سره بدل کړئ:
const char* WIFI_SSID = "your WIFI";
const char* WIFI_PASSWORD = "passW0rd";
مهم: د Wi-Fi SSIDs د لویو او وړو تورو توپیر لري. یو SSID چې نوم یې "Book" دی د "book" سره یو شان نه دی. که لوی او کوچني توري په سمه توګه سره سمون ونه خوري، ESP32-S3 به له نښلولو پاتې شي.
د NTP سرور، وخت زون، او د ورځې رڼا سپمول
ساعت د انټرنیټ NTP سرور په کارولو سره وخت همغږي کوي:
const char* ntpServer = "pool.ntp.org";
محلي وخت د دې آفسیټونو په کارولو سره محاسبه کیږي:
// Toronto-ish: UTC-5, plus 1 hour DST
const long gmtOffset_sec = -5 * 3600;
const int daylightOffset_sec = 3600;
gmtOffset_sec: د UTC آفسیټ په ثانیو کې (بېلګه: UTC-5 =-5 * 3600)daylightOffset_sec: که د ورځې رڼا سپمول فعال وي3600وکاروئ، یا که نه کارول کیږي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 رنګ څرخ کاروي. هر توری د یو څه مختلف رنګ آفسیټ سره رسم شوی، او رنګونه د وخت په تیریدو سره بدلیږي، چې یو روان رینبو انیمیشن تولیدوي.
// 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);
}
لکه څنګه چې متن سکرول کیږي، هر توری د RGB طیف له لارې پرمخ ځي، چې یو دوامداره رینبو اغېز رامینځته کوي چې په کوچني 8×8 ښودنه کې په ځانګړي ډول اغېزمن ښکاري.
د وخت او نیټې ښودنې چلند
ساعت د وخت او نیټې لپاره جلا بفرونه ساتي:
- وخت:
HH:MM - نیټه:
MMM DD(د مثال په توګهJAN 08)
نیټه په ټاکلي وقفه کې ښودل کیږي:
const uint32_t dateIntervalMs = 60000; // Show date every 1 minute
د هر بشپړ سکرول دورې په پای کې، کوډ پریکړه کوي چې ایا د وخت ښودلو ته دوام ورکړي یا نیټې ته واړوي.
په 8×8 میټرکس کې د سکرول منطق
ځکه چې ښودنه یوازې 8 پکسل پراخه ده، متن له ښي څخه کی ته په نرمۍ سره سکرول کیږي. یوځل چې متن په بشپړ ډول له سکرین څخه ووځي، کرسر بیا تنظیمیږي او راتلونکی مینځپانګه (وخت یا نیټه) د راتلونکي پاس لپاره بار کیږي.
مظاهره
د سکیچ اپلوډ کولو او د USB-C له لارې بورډ ته بریښنا ورکولو وروسته:
- ESP32-S3 ستاسو د Wi-Fi شبکې سره نښلوي
- وخت له انټرنیټ څخه همغږي کیږي
- وخت په
HH:MMبڼه کې سکرول کیږي - نیټه په دوره یي ډول ښکاري
- ټول متن د نرم متحرک رینبو اغیزې سره وړاندې کیږي
- ښودنه په اتوماتيک ډول د شپې تیاره او د ورځې روښانه کیږي
ډاونلوډونه او لینکونه
د بشپړ سرچینې کوډ د دې مقالې لاندې وړاندې شوی دی. ګټورې وسیلې او حوالې، په شمول د RGB رنګ غوره کوونکی، هم د دې مقالې لاندې تړل شوي دي.
دا ټیوټوریل برخه ده له: 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 میټرکس انټرنیټ ساعت پروژه - ۳ د شپې رنګونه د نیټې سره
- د ESP32-S3 RGB LED میټرکس انټرنیټ ساعت پروژه - ۴ تصادفي رنګونه
- 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();
}
}
سرچینې او حوالې
-
ویډیو
-
دننه🎨 Color picker Toolrobojax.com
فایلونه📁
Fritzing فایل
-
esp32-S3-supermini-tht fritzing part
esp32-S3-supermini-tht.fzpz0.02 MB