Mafunzo haya ni sehemu ya: Matrix ya LED ya ESP32-S3 RGB
Mradi mzuri wa kuunda kwa ajili ya matumizi ya kufurahisha na ya vitendo kwa kutumia moduli ya ESP32-S3 RGB Matrix. Viungo vya video zingine viko chini ya makala haya.
Mradi wa Saa ya Mtandao ya Matrix ya LED ya RGB ya ESP32-S3 - Saa 2 za rangi nyingi za Kuonyesha Muda na Tarehe
Saa ya Mtandao ya ESP32-S3 RGB NeoMatrix yenye Mwonekano wa Muda na Tarehe
Mradi huu ni saa ya mtandao ya ESP32-S3 RGB Matrix iliyoboreshwa ambayo haionyeshi muda wa sasa tu bali pia huonyesha tarehe mara kwa mara. ESP32-S3 huungana na Wi-Fi, husawazisha muda kutoka kwa seva ya NTP, na hutembeza ama HH:MM au tarehe (kwa mfano SEP 21) kwenye 8×8 RGB NeoMatrix. Mwonekano huu unaauni udhibiti wa mwangaza wa mchana/usiku kiotomatiki na rangi za RGB zinazoweza kubadilishwa.

Nini saa hii hufanya
Baada ya kuungana na mtandao wako wa Wi-Fi, ESP32-S3 hupata muda wa sasa wa eneo lako kutoka kwenye mtandao. Saa kwa kawaida hutembeza muda, lakini kwa muda maalum hubadilika kuonyesha tarehe. Rangi ya maandishi inaweza kuwa ya kudumu kwa rangi moja au kubadilika kiotomatiki kati ya rangi nyingi zilizobainishwa na mtumiaji. Mwangaza hupunguzwa kiotomatiki usiku ili mwonekano usiudhi macho.
Maktaba zilizotumika
Sketch hii inategemea maktaba zifuatazo:

#include <WiFi.h>
#include "time.h"
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
Sakinisha Adafruit NeoMatrix kutoka kwenye Arduino Library Manager. Vitegemezi vyote muhimu kama vile Adafruit GFX Library na Adafruit NeoPixel vitasakinishwa kiotomatiki.

Usanidi muhimu wa mtumiaji
SSID na nenosiri la Wi-Fi (nyeti kwa herufi kubwa/ndogo)
Lazima ubadilishe vitambulisho vya Wi-Fi na taarifa za mtandao wako mwenyewe:

const char* WIFI_SSID = "WiFi";
const char* WIFI_PASSWORD = "passW0rd";
Muhimu: SSID za Wi-Fi ni nyeti kwa herufi kubwa/ndogo. Kwa mfano, SSID inayoitwa "Book" si sawa na "book". Ikiwa herufi kubwa hazilingani haswa, ESP32 itashindwa kuungana.
Seva ya NTP, eneo la saa, na muda wa kuokoa mchana
Saa hutumia seva ya muda ya mtandao:
const char* ntpServer = "pool.ntp.org";
Muda wa eneo huhesabiwa kwa kutumia marekebisho haya:
const long gmtOffset_sec = -5 * 3600;
const int daylightOffset_sec = 3600;
gmtOffset_sec: Marekebisho yako ya UTC kwa sekunde (mfano: UTC-5 =-5 * 3600)daylightOffset_sec: Tumia3600kwa DST au0ikiwa DST haitumiki
Mipangilio hii inatumika kwa kutumia:
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
Udhibiti wa mwangaza (mchana / usiku)
Mradi huu hubadilisha mwangaza kiotomatiki kulingana na saa ya siku:
const int DAY_BRIGHTNESS = 40;
const int NIGHT_BRIGHTNESS = 5;
const int NIGHT_START_HOUR = 22;
const int NIGHT_END_HOUR = 6;
Kati ya saa 10 jioni na saa 6 asubuhi, mwangaza hupunguzwa ili mwonekano usisumbue katika mazingira ya giza. Unaweza kubadilisha thamani hizi kulingana na upendeleo wako.
Usanidi wa rangi za RGB
Saa inaauni hali ya rangi ya kudumu na hali ya kubadilisha rangi kiotomatiki. Rangi za RGB zilizobainishwa na mtumiaji huhifadhiwa kwenye safu:
uint8_t userColors[][3] = {
{17, 43, 171}, // Bluu Nyepesi
{255, 0, 0}, // Nyekundu
{0, 255, 0}, // Kijani
{255, 165, 0}, // Chungwa
{255, 0, 255} // Magenta
};
Kila rangi hutumia thamani za RGB (Nyekundu, Kijani, Bluu) kuanzia 0 hadi 255. Kwa kubadilisha nambari hizi, unaweza kuunda karibu rangi yoyote kwa mwonekano. Ikiwa useFixedColor imewekwa kuwa true, saa daima hutumia rangi moja. Ikiwa imewekwa kuwa false, rangi hubadilika kiotomatiki baada ya kila tembezi kamili.
Ili kupata haraka thamani sahihi za RGB kwa rangi yoyote unayotaka, tumia zana ya RGB Color Picker Color Picker .
Muundo wa muda na tarehe
Muda huundwa kama HH:MM na huhifadhiwa kwenye kihifadhi kidogo cha herufi. Tarehe huundwa kama mfuatano wa herufi kubwa kama vile SEP 21. Mwonekano hubadilika kiotomatiki kati ya muda na tarehe kwa muda maalum.
Mantiki ya utembezi kwenye mwonekano wa 8×8
Kwa sababu matrix ya 8×8 ni ndogo sana kuonyesha maandishi yote mara moja, sketch hutembeza maandishi kwa mlalo. Mara tu maandishi yanapoondoka kabisa kwenye mwonekano, rangi husasishwa na maudhui hubadilika kati ya muda na tarehe inapohitajika.
Maonyesho
Baada ya kupakia sketch:
- ESP32 huungana na Wi-Fi
- Muda husawazishwa kutoka kwenye mtandao
- Muda wa sasa hutembea kwenye matrix
- Tarehe inaonekana mara kwa mara
- Mwangaza hubadilika kiotomatiki kwa mchana na usiku
Vipakuliwa na viungo
Msimbo kamili wa chanzo umetolewa hapa chini ya makala hii. Viungo vya sehemu, zana, na karatasi za data pia vinapatikana hapa chini ya makala hii.
Mafunzo haya ni sehemu ya: Matrix ya LED ya ESP32-S3 RGB
- Mradi wa Matrix ya LED ya RGB ya ESP32-S3 1- Nukta ya Msingi
- Mradi wa Matrix ya LED ya RGB ya ESP32-S3 2 - Maandishi Yanayotembea
- Mradi wa ESP32-S3 RGB LED Matrix 3 - Maandishi kutoka kwa simu ya mkononi
- Mradi wa ESP32-S3 RGB LED Matrix 4 - Nukta ya kuinamia
- Mradi wa Matrix ya LED ya RGB ya ESP32-S3 5 - Mshale daima juu
- Mchezo wa Cible wa Mradi wa Matrix ya LED ya RGB ya ESP32-S3 6
- Mradi wa Saa ya Matrix ya LED ya RGB ya ESP32-S3 Wi-Fi + NTP -1 Saa ya Msingi
- Mradi wa Saa ya Mtandao ya Matrix ya LED ya RGB ya ESP32-S3 - Rangi 3 za Usiku na Tarehe
- Mradi wa Saa ya Mtandao ya Matrix ya LED ya RGB ya ESP32-S3 - Rangi 5 za Upinde wa mvua
- Mradi wa Saa ya Mtandao ya Matrix ya LED ya RGB ya ESP32-S3 - Rangi 4 za Nasibu
- 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();
}
}
Tänker att du kanske behöver
-
Amazon
-
eBay
-
AliExpressPurchase ESP32-S3 RGB matrix from AliExpresss.click.aliexpress.com
-
AliExpressPurchase ESP32-S3 RGB matrix from AliExpress (2)s.click.aliexpress.com
Resurser och referenser
-
Video
Filer📁
Fritzing-fil
-
esp32-S3-supermini-tht fritzing part
esp32-S3-supermini-tht.fzpz0.02 MB