یہ ٹیوٹوریل کا حصہ ہے: ESP32-S3 RGB LED میٹرکس
ESP32-S3 RGB میٹرکس ماڈیول کا استعمال کرتے ہوئے تفریحی اور عملی ایپلی کیشنز کے لیے تخلیق کرنے کے لیے زبردست پروجیکٹ۔ دیگر ویڈیوز کے لنکس اس مضمون کے نیچے ہیں۔
ESP32-S3 RGB LED میٹرکس انٹرنیٹ کلاک پروجیکٹ - 2 کلاک ملٹی کلر ٹائم اور ڈیٹ ڈسپلے
ESP32-S3 RGB NeoMatrix انٹرنیٹ کلاک ٹائم اور ڈیٹ ڈسپلے کے ساتھ
یہ پروجیکٹ ایک بہتر ESP32-S3 RGB میٹرکس انٹرنیٹ کلاک ہے جو نہ صرف موجودہ وقت دکھاتا ہے بلکہ وقفے وقفے سے تاریخ بھی دکھاتا ہے۔ ESP32-S3 وائی فائی سے جڑتا ہے، NTP سرور سے وقت ہم آہنگ کرتا ہے، اور 8×8 RGB NeoMatrix پر HH:MM یا تاریخ (مثال کے طور پر SEP 21) اسکرول کرتا ہے۔ ڈسپلے خودکار دن/رات کی چمک کنٹرول اور حسب ضرورت RGB رنگوں کو سپورٹ کرتا ہے۔

یہ کلاک کیا کرتا ہے
آپ کے وائی فائی نیٹ ورک سے جڑنے کے بعد، ESP32-S3 انٹرنیٹ سے موجودہ مقامی وقت حاصل کرتا ہے۔ کلاک عام طور پر وقت اسکرول کرتا ہے، لیکن ایک مقررہ وقفے پر یہ تاریخ دکھانے کے لیے سوئچ کرتا ہے۔ متن کا رنگ ایک مقررہ رنگ پر رکھا جا سکتا ہے یا خود بخود متعدد صارف کی وضاحت کردہ رنگوں میں گردش کر سکتا ہے۔ چمک رات کو خود بخود کم ہو جاتی ہے تاکہ ڈسپلے آنکھوں کے لیے آسان ہو۔
استعمال شدہ لائبریریاں
یہ اسکیچ درج ذیل لائبریریوں پر منحصر ہے:

#include <WiFi.h>
#include "time.h"
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
Arduino لائبریری مینیجر سے Adafruit NeoMatrix انسٹال کریں۔ تمام ضروری انحصار جیسے Adafruit GFX Library اور Adafruit NeoPixel خود بخود انسٹال ہو جائیں گے۔

اہم صارف ترتیب
وائی فائی SSID اور پاس ورڈ (کیس حساس)
آپ کو وائی فائی اسناد کو اپنی نیٹ ورک معلومات سے تبدیل کرنا ہوگا:

const char* WIFI_SSID = "WiFi";
const char* WIFI_PASSWORD = "passW0rd";
اہم: وائی فائی 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استعمال کریں یا0اگر DST استعمال نہ ہو
یہ ترتیبات درج ذیل کے ذریعے لاگو کی جاتی ہیں:
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 وائی فائی سے جڑتا ہے
- وقت انٹرنیٹ سے ہم آہنگ ہوتا ہے
- موجودہ وقت میٹرکس پر اسکرول ہوتا ہے
- تاریخ وقفے وقفے سے ظاہر ہوتی ہے
- چمک دن اور رات کے لیے خود بخود ایڈجسٹ ہوتی ہے
ڈاؤن لوڈز اور لنکس
مکمل سورس کوڈ اس مضمون کے نیچے فراہم کیا گیا ہے۔ پرزوں، ٹولز، اور ڈیٹا شیٹس کے لنکس بھی اس مضمون کے نیچے دستیاب ہیں۔
یہ ٹیوٹوریل کا حصہ ہے: ESP32-S3 RGB LED میٹرکس
- ESP32-S3 آر جی بی ایل ای ڈی میٹرکس پروجیکٹ 1- بنیادی ڈاٹ
- ESP32-S3 آر جی بی ایل ای ڈی میٹرکس پروجیکٹ 2 - اسکرولنگ ٹیکسٹ
- ESP32-S3 RGB LED میٹرکس پروجیکٹ 3 - موبائل فون سے ٹیکسٹ
- ESP32-S3 آر جی بی ایل ای ڈی میٹرکس پروجیکٹ 4 - جھکاؤ ڈاٹ
- ESP32-S3 آر جی بی ایل ای ڈی میٹرکس پروجیکٹ 5 - تیر ہمیشہ اوپر
- ESP32-S3 آر جی بی ایل ای ڈی میٹرکس پروجیکٹ 6 - سیبل گیم
- ESP32-S3 RGB LED میٹرکس وائی فائی + NTP ٹائم کلاک پروجیکٹ -1 بنیادی کلاک
- ESP32-S3 RGB LED میٹرکس انٹرنیٹ کلاک پروجیکٹ - تاریخ کے ساتھ 3 رات کے رنگ
- ESP32-S3 RGB LED میٹرکس انٹرنیٹ کلاک پروجیکٹ - 5 قوس قزح رنگ
- ESP32-S3 RGB LED میٹرکس انٹرنیٹ کلاک پروجیکٹ - 4 بے ترتیب رنگ
- 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
وسائل اور حوالہ جات
-
ویڈیو
فائلیں📁
فریٹزنگ فائل
-
esp32-S3-supermini-tht fritzing part
esp32-S3-supermini-tht.fzpz0.02 MB