This tutorial is part of: 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 - Rangi 3 za Usiku na Tarehe
Saa ya Mtandao ya NeoMatrix RGB ya ESP32-S3 yenye Mwangaza wa Kiotomatiki wa Mchana/Usiku
Mradi huu ni Saa ya Mtandao ya Matrix ya RGB ya ESP32-S3 ambayo hurekebisha mwangaza kiotomatiki wakati wa mchana na usiku. ESP32-S3 huunganisha kwenye Wi-Fi, husawazisha muda wa sasa kutoka kwa seva ya NTP, na hutembeza muda katika muundo wa HH:MM kwenye NeoMatrix ya RGB ya 8×8. Saa pia inasaidia rangi za RGB zisizobadilika au zinazozunguka kwa maandishi ya onyesho.

Nini saa hii hufanya
Baada ya kuwashwa, ESP32-S3 huunganisha kwenye mtandao wako wa Wi-Fi na kupata muda wa sasa wa eneo kutoka kwenye mtandao. Muda hutembea vizuri kwenye matrix ya LED. Wakati wa masaa ya usiku, onyesho hupunguza mwangaza kiotomatiki hadi kiwango cha chini, wakati wa mchana linarejea kwenye kiwango cha juu cha mwangaza.
Maktaba zilizotumika
Sketch hii hutumia 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 Meneja wa Maktaba wa Arduino. Maktaba zote muhimu kama Adafruit GFX Library na Adafruit NeoPixel zitasakinishwa kiotomatiki.

Usanidi muhimu wa mtumiaji
SSID ya Wi-Fi na nenosiri (nyeti kwa herufi kubwa/ndogo)
Badilisha thamani zifuatazo na vitambulisho vyako vya Wi-Fi:

const char* WIFI_SSID = "WiFi";
const char* WIFI_PASSWORD = "passW0rd";
Muhimu: SSID za Wi-Fi ni nyeti kwa herufi kubwa/ndogo. SSID inayoitwa "Book" si sawa na "book". Ikiwa herufi kubwa hazilingani haswa, ESP32 itashindwa kuunganisha.
Seva ya NTP, eneo la saa, na muda wa kuokoa mchana
Saa husawazisha muda kwa kutumia seva ifuatayo ya NTP:
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_sechufafanua marekebisho yako ya UTC kwa sekundedaylightOffset_sechuongeza saa moja wakati muda wa kuokoa mchana unatumika (tumia0ikiwa haihitajiki)
Thamani hizi hutumika na:
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
Mwangaza wa kiotomatiki wa mchana/usiku
Mwangaza wa onyesho hubadilika kiotomatiki kulingana na saa ya sasa:
const int DAY_BRIGHTNESS = 40;
const int NIGHT_BRIGHTNESS = 5;
const int NIGHT_START_HOUR = 22; // 10 PM
const int NIGHT_END_HOUR = 6; // 6 AM
Kati ya saa 10 usiku na saa 6 asubuhi, mwangaza wa matrix hupunguzwa ili uwe rahisi katika mazingira ya giza. Nje ya masaa hayo, mwangaza kamili wa mchana unarejeshwa. Unaweza kurekebisha thamani hizi kulingana na mwanga wa chumba chako.
Usanidi wa rangi ya RGB
Rangi ya maandishi ya saa hufafanuliwa kwa kutumia thamani za RGB (Nyekundu, Kijani, Bluu), ambapo kila chaneli huanzia 0 hadi 255. Rangi nyingi zinaweza kuhifadhiwa kwenye safu na kuzungushwa kiotomatiki:
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
};
Ikiwa useFixedColor imewekwa kuwa true, saa daima hutumia rangi moja. Ikiwa imewekwa kuwa false, rangi hubadilika kiotomatiki baada ya kila mtembeo kamili wa muda.
Ili kupata haraka thamani halisi za RGB za rangi yoyote, tumia zana ya Kichagua Rangi cha RGB: Kichagua Rangi .
Onyesho la muda na mtembeo
Muda wa sasa huundwa kama HH:MM na kuhifadhiwa kwenye kihifadhi kidogo cha herufi. Kwa sababu onyesho lina upana wa pikseli 8 tu, maandishi hutembea vizuri kutoka kulia kwenda kushoto. Mara tu muda unapoondoka kabisa kwenye onyesho, rangi inayofuata (ikiwa imewezeshwa) huchaguliwa kwa mzunguko unaofuata.
Maonyesho
Baada ya kupakia sketch:
- ESP32-S3 huunganisha kwenye Wi-Fi
- Muda husawazishwa kutoka kwenye mtandao
- Muda wa sasa hutembea kwenye matrix ya RGB
- Mwangaza hubadilika kiotomatiki kati ya mchana na usiku
- Rangi ya maandishi inabaki isiyobadilika au inazunguka kulingana na mipangilio yako
Upakuaji na viungo
Msimbo kamili wa chanzo umetolewa hapa chini ya makala hii. Viungo vya sehemu, zana, na karatasi za data vinapatikana hapa chini ya makala hii.
This tutorial is part of: 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 - Saa 2 za rangi nyingi za Kuonyesha Muda 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 3- Night color with Date
* =====================================================================================
watch video https://youtube.com/shorts/4iWjLiD7fS8
📚⬇️ Download and resource page https://robojax.com/RJT840
* Author: Gemini (AI Thought Partner) & 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 after the time finishes a full scroll.
* 3. Auto-Brightness: Dims the LEDs during night hours (User-configurable).
* =====================================================================================
*/
#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; // 10 PM
const int NIGHT_END_HOUR = 6; // 6 AM
// --- 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]);
// --- INTERVALS ---
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";
int16_t scrollX = 8;
const char* ntpServer = "pool.ntp.org";
const long gmtOffset_sec = -5 * 3600;
const int daylightOffset_sec = 3600;
void updateTimeText() {
struct tm timeinfo;
if (!getLocalTime(&timeinfo)) return;
// Format HH:MM
snprintf(timeText, sizeof(timeText), "%02d:%02d", timeinfo.tm_hour, timeinfo.tm_min);
// Apply Auto-Brightness
if (timeinfo.tm_hour >= NIGHT_START_HOUR || timeinfo.tm_hour < NIGHT_END_HOUR) {
matrix.setBrightness(NIGHT_BRIGHTNESS);
} else {
matrix.setBrightness(DAY_BRIGHTNESS);
}
}
void scrollTime() {
matrix.fillScreen(0);
// Pick the color (Fixed or Cycle)
int idx = useFixedColor ? fixedColorIndex : currentColorIndex;
matrix.setTextColor(matrix.Color(userColors[idx][0], userColors[idx][1], userColors[idx][2]));
matrix.setCursor(scrollX, 0);
matrix.print(timeText);
matrix.show();
scrollX--;
// Width for "HH:MM" is roughly 30 pixels
int16_t textWidth = 30;
// TRIGGER: When time is fully off-screen
if (scrollX < -textWidth) {
scrollX = matrix.width(); // Reset position to right side
// Cycle to the next color in the array for the next pass
if (!useFixedColor) {
currentColorIndex = (currentColorIndex + 1) % totalColors;
Serial.print("Next cycle color index: ");
Serial.println(currentColorIndex);
}
}
}
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);
updateTimeText();
}
void loop() {
unsigned long now = millis();
// Update time digits and brightness once per second
if (now - lastTimeUpdateMs >= timeUpdateIntervalMs) {
lastTimeUpdateMs = now;
updateTimeText();
}
// Handle the scrolling animation
if (now - lastScrollMs >= scrollIntervalMs) {
lastScrollMs = now;
scrollTime();
}
}
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
-
Interna🎨 Color picker Toolrobojax.com
Filer📁
Fritzing-fil
-
esp32-S3-supermini-tht fritzing part
esp32-S3-supermini-tht.fzpz0.02 MB