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

یہ کیسے کام کرتا ہے (اعلی سطح)
1) ESP32-S3 آپ کے راؤٹر سے <WiFi.h> استعمال کرتے ہوئے جڑتا ہے۔
2) یہ "time.h" اور configTime() استعمال کرتے ہوئے NTP سرور سے وقت ہم آہنگ کرتا ہے۔
3) وقت کو HH:MM کے طور پر فارمیٹ کیا جاتا ہے اور ایک چھوٹے ٹیکسٹ بفر میں محفوظ کیا جاتا ہے۔
4) نیو میٹرکس ٹیکسٹ رینڈر کرتا ہے اور اسے 8×8 پینل پر اسکرول کرتا ہے۔

RGB رنگ
کلاک ٹیکسٹ کا رنگ RGB (سرخ، سبز، نیلا) اقدار کا استعمال کرتے ہوئے کنٹرول کیا جاتا ہے، جہاں ہر رنگ چینل 0 سے 255 تک ہوتا ہے اور مختلف امتزاج نیو میٹرکس پر مختلف رنگ بناتے ہیں۔ color_RED، color_GREEN، اور color_BLUE متغیرات کو ایڈجسٹ کرکے، آپ آسانی سے کلاک کی ظاہری شکل کو اپنی پسند کے کسی بھی رنگ میں تبدیل کر سکتے ہیں۔ کسی مخصوص رنگ کے لیے عین RGB اقدار تلاش کرنے کے لیے، آپ آن لائن RGB کلر پکر کلر پکر استعمال کر سکتے ہیں۔

استعمال شدہ لائبریریاں
یہ شامل کردہ فائلیں آپ کو بتاتی ہیں کہ اسکیچ کس چیز پر منحصر ہے:

#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 بھی خود بخود شامل کرے گا۔
اہم صارف ترتیبات جو آپ کو ضرور تبدیل کرنی چاہئیں
1) ٹیکسٹ رنگ (RGB)
اپنے کلاک ٹیکسٹ کا رنگ 0–255 اقدار کا استعمال کرتے ہوئے سیٹ کریں:
//ڈسپلے کا رنگ سیٹ کریں جو سرخ، سبز اور نیلے سے بنا ہے
unsigned int color_RED = 17;
unsigned int color_GREEN = 43;
unsigned int color_BLUE = 171;
یہ اقدار یہاں استعمال ہوتی ہیں:
matrix.setTextColor(matrix.Color(color_RED, color_GREEN, color_BLUE));
نوٹ: اگر آپ تمام رنگوں کو 0 (سیاہ) پر سیٹ کرتے ہیں، تو ٹیکسٹ غیر مرئی ہو جاتا ہے۔ اسکیچ میں حفاظتی جانچ شامل ہے:
// اگر صارف نے تمام رنگ 0 پر سیٹ کیے ہیں، تو ڈسپلے بند ہو جائے گا، اس لیے اسے سبز سیٹ کریں
if (color_RED == 0 && color_GREEN == 0 && color_BLUE == 0) {
color_GREEN = 200;
}
یہ یقینی بناتا ہے کہ میٹرکس غیر مرئی رنگ کی ترتیب کی وجہ سے کبھی "مردہ" نظر نہ آئے۔
2) وائی فائی SSID اور پاس ورڈ
انہیں اپنے حقیقی وائی فائی نام اور پاس ورڈ سے تبدیل کریں:
const char* WIFI_SSID = "WiFi";
const char* WIFI_PASSWORD = "passW0rd";
شروع کے دوران، ESP32 سیریل مانیٹر میں کنکشن کی پیشرفت پرنٹ کرتا ہے اور تقریباً 15 سیکنڈ (30 کوششیں × 500ms) کے بعد ٹائم آؤٹ ہو جاتا ہے۔
3) NTP سرور
ڈیفالٹ NTP سرور ہے:
const char* ntpServer = "pool.ntp.org";
آپ اسے ویسے ہی رکھ سکتے ہیں۔ اگر آپ کبھی مقامی سرور استعمال کرنا چاہیں، تو ہوسٹ نام کو اپنے پسندیدہ NTP سرور سے تبدیل کریں۔
4) ٹائم زون آفسیٹ اور ڈے لائٹ سیونگ آفسیٹ
یہ دو ترتیبات مقامی وقت کو کنٹرول کرتی ہیں:
// ٹورنٹو جیسا: UTC-5، جمع 1 گھنٹہ DST
const long gmtOffset_sec = -5 * 3600; // -5 گھنٹے
const int daylightOffset_sec = 3600; // DST کے لیے +1 گھنٹہ
انہیں کیسے سیٹ کریں:
gmtOffset_sec= (UTC آفسیٹ گھنٹے) × 3600۔ مثال: UTC-5 →-5*3600، UTC+2 →2*3600۔daylightOffset_sec=0اگر آپ DST ایڈجسٹمنٹ نہیں چاہتے، یا3600اگر آپ کا علاقہ فی الحال DST (+1 گھنٹہ) پر عمل کر رہا ہے۔
یہ یہاں لاگو ہوتے ہیں:
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
ڈسپلے کنفیگریشن
میٹرکس ڈیٹا پن
ڈیٹا پن یہاں بیان کیا گیا ہے:
#define MATRIX_PIN 14
اگر آپ کی وائرنگ مختلف GPIO استعمال کرتی ہے، تو اس نمبر کو مماثل کرنے کے لیے تبدیل کریں۔
نیو میٹرکس لے آؤٹ + رنگ کی ترتیب
آپ کا میٹرکس اس طرح ابتدائی کیا گیا ہے:
Adafruit_NeoMatrix matrix(8, 8, MATRIX_PIN,
NEO_MATRIX_TOP + NEO_MATRIX_LEFT +
NEO_MATRIX_ROWS + NEO_MATRIX_PROGRESSIVE,
NEO_RGB + NEO_KHZ800);
ڈسپلے کے "غلط" نظر آنے کی دو عام وجوہات:
- گردش / وائرنگ کی سمت: اگر ٹیکسٹ الٹا یا آئینہ دار نظر آتا ہے، تو
NEO_MATRIX_*جھنڈوں (TOP/BOTTOM، LEFT/RIGHT، ROWS/COLUMNS، PROGRESSIVE/ZIGZAG) کو ایڈجسٹ کریں۔ - رنگ کی ترتیب: یہ کوڈ
NEO_RGBاستعمال کرتا ہے۔ کچھ پینلNEO_GRBہیں۔ اگر سرخ/سبز/نیلا مماثل نہیں ہیں، توNEO_RGBکو صحیح ترتیب میں تبدیل کریں۔
چمک
چمک initMatrix() میں سیٹ کی گئی ہے:
matrix.setBrightness(40);
روشن ڈسپلے کے لیے بڑھائیں، کم گرمی اور بجلی کی کھپت کے لیے کم کریں۔
وقت کو HH:MM کے طور پر کیسے بنایا جاتا ہے
کلاک فارمیٹ شدہ وقت کو 6-حرفی بفر میں محفوظ کرتا ہے:
char timeText[6] = "00:00";
پھر updateTimeText() NTP-مطابقت شدہ مقامی وقت پڑھتا ہے اور متن لکھتا ہے:
// فارمیٹ HH:MM
snprintf(timeText, sizeof(timeText), "%02d:%02d",
timeinfo.tm_hour,
timeinfo.tm_min);
یہ مرکزی لوپ میں ہر سیکنڈ میں ایک بار اپ ڈیٹ ہوتا ہے۔
8×8 ڈسپلے پر اسکرولنگ کیسے کام کرتی ہے
8×8 میٹرکس HH:MM کو ایک ساتھ دکھانے کے لیے بہت تنگ ہے، اس لیے اسکیچ متن کو اسکرول کرتا ہے۔ یہ وقت کو بدلتے ہوئے X پوزیشن (scrollX) پر کھینچتا ہے، پھر ہر اپ ڈیٹ پر اسے ایک پکسل بائیں طرف منتقل کرتا ہے۔
int16_t scrollX = 8;
const uint16_t scrollIntervalMs = 120;
ہر اسکرول مرحلہ:
matrix.fillScreen(0);
matrix.setCursor(scrollX, 0);
matrix.print(timeText);
matrix.show();
scrollX--;
جب متن مکمل طور پر بائیں جانب سے باہر نکل جاتا ہے، کوڈ اسے دائیں کنارے سے دوبارہ شروع کرنے کے لیے ری سیٹ کرتا ہے:
int16_t textWidth = 30;
if (scrollX < -textWidth) {
scrollX = matrix.width();
}
سیریل مانیٹر آؤٹ پٹ (ڈیبگنگ)
یہ اسکیچ مفید پیغامات پرنٹ کرتا ہے:
- وائی-فائی کنکشن کی پیشرفت اور IP پتہ
- کیا وقت کی مطابقت کامیاب ہوئی
- فارمیٹ شدہ وقت کی سٹرنگ (مثلاً،
Time text: 14:32)
اگر ڈسپلے خالی ہے، تو سیریل مانیٹر پہلی جگہ ہے جہاں چیک کرنا چاہیے تاکہ تصدیق ہو سکے کہ وائی-فائی اور NTP کام کر رہے ہیں۔
پروجیکٹ کا مظاہرہ
اپ لوڈ اور ری سیٹ کے بعد:
- ESP32 وائی-فائی سے جڑتا ہے
pool.ntp.orgسے وقت کی مطابقت کرتا ہے- میٹرکس پر مختصراً
OKدکھاتا ہے - موجودہ وقت کو
HH:MMکے طور پر مسلسل اسکرول کرتا ہے
ڈاؤن لوڈز اور لنکس
مکمل کوڈ اس مضمون کے نیچے فراہم کیا گیا ہے۔ پرزے، اوزار، اور ڈیٹا شیٹس بھی اس مضمون کے نیچے لنک کیے گئے ہیں۔
یہ ٹیوٹوریل کا حصہ ہے: 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 میٹرکس انٹرنیٹ کلاک پروجیکٹ - 2 کلاک ملٹی کلر ٹائم اور ڈیٹ ڈسپلے
- 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
/*
This is ESP32 sketch that connects to the internet, gets the time and displays it on the RGB matrix
you must set your WiFi correctly to make sure it gets connected.
watch video https://youtube.com/shorts/4iWjLiD7fS8
📚⬇️ Download and resource page https://robojax.com/RJT838
* Author: Ahmad Shamshiri (Robojax.com)
* Date: 07 Jan 2026
www.Robojax.com
https://youTube.com/@robojax
*/
#include <WiFi.h>
#include "time.h"
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
//set the color of diplay make of Red, Green and Blue
unsigned int color_RED = 17;
unsigned int color_GREEN = 43;
unsigned int color_BLUE = 171;
// 👇 REPLACE these with your real home WiFi name & password
const char* WIFI_SSID = "WiFi";
const char* WIFI_PASSWORD = "passW0rd";
#define MATRIX_PIN 14
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";
int16_t scrollX = 8;
unsigned long lastScrollMs = 0;
const uint16_t scrollIntervalMs = 120;
unsigned long lastTimeUpdateMs = 0;
const uint16_t timeUpdateIntervalMs = 1000;
//prototypes
bool updateTimeText(); // forward declaration
void scrollTime(); // forward declaration
// 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
bool updateTimeText() {
struct tm timeinfo;
if (!getLocalTime(&timeinfo)) {
Serial.println("Failed to obtain time for display");
return false;
}
// Format HH:MM
snprintf(timeText, sizeof(timeText), "%02d:%02d",
timeinfo.tm_hour,
timeinfo.tm_min);
Serial.print("Time text: ");
Serial.println(timeText);
return true;
}
void scrollTime() {
matrix.fillScreen(0);
matrix.setCursor(scrollX, 0);
matrix.print(timeText);
matrix.show();
scrollX--;
// Rough width: 5 characters ("HH:MM") × 6 pixels each ≈ 30 px
int16_t textWidth = 30;
if (scrollX < -textWidth) {
scrollX = matrix.width(); // reset to right edge (8)
}
}
void initMatrix() {
matrix.begin();
matrix.setBrightness(40); // be careful with heat
matrix.setTextWrap(false);
matrix.setTextColor(matrix.Color(color_RED, color_GREEN, color_BLUE)); // color of text
}
void showMessage(const char* msg) {
matrix.fillScreen(0);
matrix.setCursor(0, 0); // top-left
matrix.print(msg);
matrix.show();
}
void printLocalTime() {
struct tm timeinfo;
if (!getLocalTime(&timeinfo)) {
Serial.println("Failed to obtain time");
return;
}
// Format: 2025-11-18 14:35:12
Serial.printf("%04d-%02d-%02d %02d:%02d:%02d\n",
timeinfo.tm_year + 1900,
timeinfo.tm_mon + 1,
timeinfo.tm_mday,
timeinfo.tm_hour,
timeinfo.tm_min,
timeinfo.tm_sec);
}
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println();
Serial.println("ESP32-S3 Internet Clock - WiFi + NTP test");
// 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());
}
// if user set all colors to 0, the dispaly will be turned off so set it green
if(color_RED ==0 & color_GREEN ==0 && color_BLUE ==0)
{
color_GREEN = 200;
}
// Configure time via NTP
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
Serial.println("Waiting for time...");
delay(2000); // small wait for initial sync
printLocalTime(); // print once at startup
// NEW: init the LED matrix and show a test message
initMatrix();
showMessage("OK");
}
void loop() {
unsigned long now = millis();
// Update the time string "HH:MM" once per second
if (now - lastTimeUpdateMs >= timeUpdateIntervalMs) {
lastTimeUpdateMs = now;
updateTimeText(); // fills timeText[], e.g. "14:32"
}
// Scroll the time across the 8×8 every scrollIntervalMs
if (now - lastScrollMs >= scrollIntervalMs) {
lastScrollMs = now;
scrollTime(); // uses timeText and scrollX
}
}
آپ کو جن چیزوں کی ضرورت ہو سکتی ہے
-
ایمیزون
-
ای بے
-
علی ایکسپریس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