This tutorial is part of: Matrix na LED na ESP32-S3 RGB
Kyakkyawan aiki don ƙirƙirar aikace-aikace masu daɗi da amfani ta amfani da module na ESP32-S3 RGB Matrix. Hanyoyin haɗi zuwa wasu bidiyo suna ƙasa da wannan labarin.
Aikin ESP32-S3 RGB LED Matrix Wi-Fi + NTP Time Clock -1 Basic Clock
Agogon Intanet na ESP32-S3 tare da 8×8 NeoMatrix (Wi-Fi + Lokacin NTP)
Wannan aikin yana juya ESP32-S3 da 8×8 RGB NeoMatrix (NeoPixel/WS2812) zuwa ƙaramin agogon intanet. ESP32 ɗin yana haɗawa da Wi-Fi, yana daidaita lokacin gida daga uwar garken NTP, sannan yana mirgina lokacin a matsayin HH:MM a kan nunin 8×8.

Yadda yake aiki (babban matakin)
1) ESP32-S3 yana haɗawa da na'urar sadarwar ku ta amfani da <WiFi.h>.
2) Yana daidaita lokaci daga uwar garken NTP ta amfani da "time.h" da configTime().
3) Ana tsara lokacin a matsayin HH:MM kuma ana adana shi a cikin ƙaramin ma'ajin rubutu.
4) NeoMatrix ɗin yana nuna rubutun kuma yana mirgina shi a kan panel ɗin 8×8.

Launi na RGB
Ana sarrafa launin rubutun agogon ta amfani da ƙimar RGB (Ja, Kore, Shudi), inda kowane tashar launi ke tsakanin 0 zuwa 255 kuma haɗuwa daban-daban ke haifar da launuka daban-daban akan NeoMatrix. Ta hanyar daidaita masu canji na color_RED, color_GREEN, da color_BLUE, zaku iya sauƙaƙa keɓance kamannin agogon zuwa kowane launi da kuke so. Don saurin nemo ainihin ƙimar RGB na wani launi na musamman, zaku iya amfani da Zaɓin Launi na RGB akan layi Zaɓin Launi .

Libraries ɗin da aka yi amfani da su
Waɗannan haɗe-haɗe suna gaya muku ainihin abin da sketch ɗin ya dogara da shi:

#include <WiFi.h>
#include "time.h"
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
Shigar da Adafruit NeoMatrix ta amfani da Arduino Library Manager. Zai kuma jawo abubuwan da ake buƙata kamar Adafruit GFX Library da Adafruit NeoPixel.
Muhimman saitunan mai amfani waɗanda DOLE ku gyara
1) Launin rubutu (RGB)
Saita launin rubutun agogonku ta amfani da ƙimar 0–255:
//saita launin nuni wanda aka yi da Ja, Kore da Shudi
unsigned int color_RED = 17;
unsigned int color_GREEN = 43;
unsigned int color_BLUE = 171;
Ana amfani da waɗannan ƙimar a nan:
matrix.setTextColor(matrix.Color(color_RED, color_GREEN, color_BLUE));
Lura: Idan kun saita dukkan launuka zuwa 0 (baƙi), rubutun zai zama marar ganuwa. Sketch ɗin ya haɗa da duba aminci:
// idan mai amfani ya saita dukkan launuka zuwa 0, nuni zai kashe don haka saita shi kore
if (color_RED == 0 && color_GREEN == 0 && color_BLUE == 0) {
color_GREEN = 200;
}
Wannan yana tabbatar da cewa matrix ɗin bai taɓa zama kamar "matattu" ba saboda saitin launi marar ganuwa.
2) Wi-Fi SSID da kalmar sirri
Maye gurbin waɗannan da ainihin sunan Wi-Fi ɗinku da kalmar sirri:
const char* WIFI_SSID = "WiFi";
const char* WIFI_PASSWORD = "passW0rd";
A lokacin farawa, ESP32 ɗin yana buga ci gaban haɗawa a cikin Serial Monitor kuma yana ƙarewa bayan kusan daƙiƙa 15 (sau 30 na sake gwadawa × 500ms).
3) Uwar garken NTP
Uwar garken NTP na asali shine:
const char* ntpServer = "pool.ntp.org";
Kuna iya barin shi kamar yadda yake. Idan kuna son amfani da uwar garken gida, maye gurbin sunan mai masauki da uwar garken NTP ɗin da kuka fi so.
4) Matsakaicin yankin lokaci da matsakaicin lokacin rana
Waɗannan saitunan biyu suna sarrafa lokacin gida:
// Toronto-ish: UTC-5, da ƙarin awa 1 na DST
const long gmtOffset_sec = -5 * 3600; // -5 hours
const int daylightOffset_sec = 3600; // +1 hour for DST
Yadda ake saita su:
gmtOffset_sec= (matsakaicin UTC a awanni) × 3600. Misali: UTC-5 →-5*3600, UTC+2 →2*3600.daylightOffset_sec=0idan ba ku son daidaitawar DST, ko3600idan yankinku yana lura da DST a halin yanzu (+1 awa).
Ana amfani da waɗannan a nan:
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
Saitin nuni
Filin bayanan matrix
An ayyana filin bayanan a nan:
#define MATRIX_PIN 14
Idan wayoyinku suna amfani da GPIO daban, canza wannan lambar don dacewa.
Tsarin NeoMatrix + tsarin launi
Ana fara matrix ɗinku kamar haka:
Adafruit_NeoMatrix matrix(8, 8, MATRIX_PIN,
NEO_MATRIX_TOP + NEO_MATRIX_LEFT +
NEO_MATRIX_ROWS + NEO_MATRIX_PROGRESSIVE,
NEO_RGB + NEO_KHZ800);
Dalilai biyu na yau da kullun da ke sa nuni ya zama "ba daidai ba":
- Juyawa / alkiblar wayoyi: Idan rubutu ya bayyana a juye ko a madubi, daidaita alamun
NEO_MATRIX_*(TOP/BOTTOM, LEFT/RIGHT, ROWS/COLUMNS, PROGRESSIVE/ZIGZAG). - Tsarin launi: Wannan lambar tana amfani da
NEO_RGB. Wasu panels ɗin suneNEO_GRB. Idan ja/kore/shudi ba su dace ba, canzaNEO_RGBzuwa tsarin da ya dace.
Haskewa
Ana saita haskewa a cikin initMatrix():
matrix.setBrightness(40);
Ƙara don nuni mai haske, rage don rage zafi da amfani da wutar lantarki.
Yadda ake samar da lokaci a matsayin HH:MM
Agogon yana adana lokacin da aka tsara a cikin ma'ajin haruffa 6:
char timeText[6] = "00:00";
Sa’an nan, updateTimeText() yana karanta lokacin gida da aka daidaita da NTP kuma ya rubuta rubutun:
// Tsara HH:MM
snprintf(timeText, sizeof(timeText), "%02d:%02d",
timeinfo.tm_hour,
timeinfo.tm_min);
Ana sabunta wannan sau ɗaya a cikin daƙiƙa ɗaya a cikin babban madauki.
Yadda gungurawa ke aiki akan nunin 8×8
Matrix 8×8 ya yi kunkuntar don nuna HH:MM a lokaci ɗaya, don haka zane yana gungurawa rubutun. Yana zana lokacin a wurin X mai canzawa (scrollX), sannan ya motsa shi zuwa hagu da pixel ɗaya a kowane sabuntawa.
int16_t scrollX = 8;
const uint16_t scrollIntervalMs = 120;
Kowane matakin gungurawa:
matrix.fillScreen(0);
matrix.setCursor(scrollX, 0);
matrix.print(timeText);
matrix.show();
scrollX--;
Lokacin da rubutun ya fita gaba’aya daga gefen hagu, lambar ta sake saita shi don farawa daga gefen dama:
int16_t textWidth = 30;
if (scrollX < -textWidth) {
scrollX = matrix.width();
}
Fitowar Serial Monitor (gyara kurakurai)
Wannan zane yana buga saƙonni masu amfani:
- Ci gaban haɗin Wi-Fi da adireshin IP
- Ko daidaita lokaci ya yi nasara
- Tsararren saƙon lokaci (misali,
Rubutun lokaci: 14:32)
Idan nunin ya kasance mara komai, Serial Monitor shine wuri na farko da za a duba don tabbatar da Wi-Fi da NTP suna aiki.
Nunin aikin
Bayan ɗora da sake saita:
- ESP32 yana haɗi zuwa Wi-Fi
- Yana daidaita lokaci daga
pool.ntp.org - Yana nuna
OKa taƙaice akan matrix - Yana gungurawa lokacin yanzu akai-akai kamar
HH:MM
Saukewa da hanyoyin haɗi
Cikakken lambar an bayar da shi a ƙasan wannan labarin. Sassan, kayan aiki, da takaddun bayanai kuma an haɗa su a ƙasan wannan labarin.
This tutorial is part of: Matrix na LED na ESP32-S3 RGB
- Aikin Matrix LED RGB na ESP32-S3 1- Digo na asali
- Aikin Matrix LED RGB na ESP32-S3 2 - Rubutu Mai Gudana
- Aikin Matrix LED RGB ESP32-S3 Project 3 - Rubutu daga wayar hannu
- Aikin ESP32-S3 RGB LED Matrix 4 - Digon karkata
- Aikin Matrix LED RGB na ESP32-S3 Na 5 - Kibiya koyaushe tana sama
- Aikin Matrix LED RGB na ESP32-S3 6 - Wasan Cible
- Aikin ESP32-S3 RGB LED Matrix Agogon Intanet - Nunin Lokaci & Kwanan Wata masu Launi da yawa na Agogo 2
- Aikin ESP32-S3 RGB LED Matrix Agogon Intanet - Launi 3 na Dare tare da Kwanan Wata
- Aikin ESP32-S3 RGB LED Matrix Internet Clock - Launi 5 na Bakan gizo
- Aikin Agogon Matrix LED RGB ESP32-S3 na Intanet - Launi 4 Bazuwa
- 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
}
}
Abin da zaka iya bukata
-
Amazon
-
eBay
-
AliExpressPurchase ESP32-S3 RGB Matrix from AliExpresss.click.aliexpress.com
-
AliExpressPurchase ESP32-S3 RGB Matrix from AliExpress (2)s.click.aliexpress.com
Albarkatun da kuma shafukan da za a duba
-
Bidiyo
Fayiloli📁
Fayil Fritzing
-
esp32-S3-supermini-tht fritzing part
esp32-S3-supermini-tht.fzpz0.02 MB