This tutorial is part of: ESP32-S3 RGB LED Matrix
Cool project to create for fun and practical applications using ESP32-S3 RGB Matrix module. Links to other videos are below this article.
ESP32-S3 RGB жарықдиодты матрицалық интернет сағат жобасы - 4 кездейсоқ түс
Кездейсоқ RGB түстері бар ESP32-S3 интернет сағаты
Бұл жоба — Wi-Fi желісіне қосылатын, NTP серверінен жергілікті уақытты синхрондайтын және уақытты САҒ:МИН форматында орнатылған 8×8 RGB NeoMatrix дисплейінде айналдыратын ESP32-S3 RGB матрицалы интернет сағаты. Бұл нұсқада сағат, қос нүкте және минуттар әрбір толық айналым циклінде таңдалатын кездейсоқ түстермен көрсетіледі, бұл үнемі өзгеріп тұратын динамикалық және ойнақы сағат дисплейін жасайды.

Бұл сағат қалай жұмыс істейді
Платаны USB-C арқылы қуаттандырғаннан кейін, ESP32-S3 Wi-Fi желіңізге қосылады және интернеттен ағымдағы жергілікті уақытты алады. Уақыт үш бөлікке бөлінеді — сағат, қос нүкте және минуттар — және әрбір бөлік RGB матрицасында бөлек сызылады. Мәтін экраннан толығымен сырғып өткенде, келесі өту үшін жаңа кездейсоқ түстер таңдалады.
Қолданылатын кітапханалар
Бұл скетч келесі кітапханаларды пайдаланады:

#include <WiFi.h>
#include "time.h"
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
Arduino Library Manager бағдарламасынан Adafruit NeoMatrix орнатыңыз. Adafruit GFX Library және Adafruit NeoPixel сияқты қажетті тәуелділіктер автоматты түрде орнатылады.

Маңызды пайдаланушы конфигурациясы
Матрица деректер түйреуіші (орнатылған RGB матрица)
RGB матрицасы платаға біріктірілгенімен, деректер түйреуіші кодта әлі де анықталуы керек:

#define MATRIX_PIN 14
GPIO 14 әдетте ESP32-S3 RGB матрицалы платаларында қолданылады. Егер сіздің плата нұсқаңыз басқа түйреуішті пайдаланса, бұл мәнді сәйкесінше жаңартыңыз.
Wi-Fi SSID және құпия сөз (регистрге сезімтал)
Wi-Fi тіркелгі деректерін өз желіңіздің ақпаратымен ауыстырыңыз:
const char* WIFI_SSID = "your WiFi SSID";
const char* WIFI_PASSWORD = "passW0rd";
Маңызды: Wi-Fi SSID атаулары регистрге сезімтал. "Book" деп аталатын SSID "book" дегенмен бірдей емес. Егер бас әріптер дәл сәйкес келмесе, ESP32-S3 қосыла алмайды.
NTP сервері, уақыт белдеуі және жазғы уақыт
Уақыт синхронизациясы интернеттегі NTP сервері арқылы жүзеге асырылады:
const char* ntpServer = "pool.ntp.org";
Жергілікті уақыт UTC және жазғы уақыт ауытқулары арқылы есептеледі:
// Торонтоға ұқсас: UTC-5, плюс 1 сағат жазғы уақыт
const long gmtOffset_sec = -5 * 3600;
const int daylightOffset_sec = 3600;
gmtOffset_sec: UTC ауытқуы секундпен (өз орныңызға қарай реттеңіз)daylightOffset_sec: Жазғы уақыт белсенді болғанда3600, әйтпесе0пайдаланыңыз
Бұл параметрлер келесідей қолданылады:
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 түстер тізімі массивте сақталады, мұнда әрбір түс 0-ден 255-ке дейінгі Қызыл, Жасыл және Көк мәндері арқылы анықталады:
uint8_t userColors[][3] = {
{255, 0, 0}, // Қызыл
{0, 255, 0}, // Жасыл
{0, 0, 255}, // Көк
{255, 165, 0}, // Қызғылт сары
{255, 0, 255}, // Маджента
{0, 255, 255}, // Көгілдір
{255, 255, 0} // Сары
};
Әрбір толық айналым циклінде:
- Сағат сандарына кездейсоқ түс тағайындалады
- Қос нүкте басқа кездейсоқ түс алады
- Минут сандары тағы бір кездейсоқ түс алады
Бұл сағатты визуалды түрде қызықты етіп, үнемі өзгеріп тұратын түс комбинациясын жасайды. Өз қалауыңыз бойынша түстер жасау үшін RGB Color Picker құралын пайдалануға болады: RGB Color Picker.
Уақытты көрсету логикасы
Уақыт үш құрамдас бөлікке бөлінеді:
- Сағаттар:
САҒ - Қос нүкте:
: - Минуттар:
МИН
Әрбір бөлік жеке сызылады, сондықтан оның өз түсі болуы мүмкін, ал барлық бөліктер 8×8 дисплейде бірге қозғалып, тегіс айналмалы анимация жасайды.
Кездейсоқ түс генерациясы
Түстердің кездейсоқтығын қамтамасыз ету үшін скетч іске қосу кезінде қосылмаған аналогтық түйреуішті пайдаланып кездейсоқ сандар генераторын инициализациялайды:
randomSeed(analogRead(0));
Бұл түс комбинацияларының әрбір қуаттандыруда және әрбір айналым циклінде әртүрлі болуын қамтамасыз етеді.
Демонстрация
Скетчті жүктеп, платаны USB-C арқылы қуаттандырғаннан кейін:
- ESP32-S3 Wi-Fi желіңізге қосылады
- Уақыт интернеттен синхрондалады
- Уақыт
САҒ:МИНформатында айналады - Сағат, қос нүкте және минуттар әр циклде кездейсоқ түстерге өзгереді
- Дисплей түнде автоматты түрде күңгірттенеді
Жүктеулер мен сілтемелер
Толық бастапқы код осы мақаланың төменінде берілген. Пайдалы құралдар мен анықтамалар осы мақаланың төменінде сілтемеленген.
This tutorial is part of: ESP32-S3 RGB LED Matrix
- ESP32-S3 RGB жарықдиодты матрицалық жобасы 1- Негізгі нүкте
- ESP32-S3 RGB LED матрица жобасы 2 - Жылжымалы мәтін
- ESP32-S3 RGB LED матрица жобасы 3 - Мобильді телефоннан мәтін
- ESP32-S3 RGB жарықдиодты матрица жобасы 4 - Еңкейту нүктесі
- ESP32-S3 RGB LED матрица жобасы 5 - Көрсеткі әрқашан жоғары
- ESP32-S3 RGB LED матрица жобасы 6 - Cible ойыны
- ESP32-S3 RGB LED матрицасы Wi-Fi + NTP уақыт сағаты жобасы -1 Негізгі сағат
- ESP32-S3 RGB жарықдиодты матрицалық интернет сағат жобасы - 2 сағат түрлі түсті уақыт пен күнді көрсету
- ESP32-S3 RGB LED матрицасы интернет сағаты жобасы - Күн мен түннің 3 түсімен
- ESP32-S3 RGB LED матрицасы интернет сағат жобасы - 5 Кемпірқосақ түсі
- ESP32-S3 RGB LED Matrix test for RGB, GRB setting
/*
* =====================================================================================
* ESP32-S3 INTERNET RGB CLOCK (8x8 Matrix) - Project 4- Random Color
* =====================================================================================
watch video https://youtube.com/shorts/4iWjLiD7fS8
📚⬇️ Download and resource page https://robojax.com/RJT843
* 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).
* =====================================================================================
*/
/*
* =====================================================================================
* ESP32-S3 INTERNET CLOCK - MULTI-COLOR ELEMENTS
* =====================================================================================
* Each part of the time (HH : MM) gets a different random color from your list.
* Colors only change once the full scroll cycle is finished.
* =====================================================================================
*/
#include <WiFi.h>
#include "time.h"
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
#define MATRIX_PIN 14
// --- CONFIGURATION ---
const int DAY_BRIGHTNESS = 40;
const int NIGHT_BRIGHTNESS = 5;
const int NIGHT_START_HOUR = 22;
const int NIGHT_END_HOUR = 6;
uint8_t userColors[][3] = {
{255, 0, 0}, // Red
{0, 255, 0}, // Green
{0, 0, 255}, // Blue
{255, 165, 0}, // Orange
{255, 0, 255}, // Magenta
{0, 255, 255}, // Cyan
{255, 255, 0} // Yellow
};
int totalColors = sizeof(userColors) / sizeof(userColors[0]);
// Variables to store the current random color indices
int hourColorIdx = 0;
int colonColorIdx = 1;
int minColorIdx = 2;
// --- GLOBALS ---
Adafruit_NeoMatrix matrix(8, 8, MATRIX_PIN,
NEO_MATRIX_TOP + NEO_MATRIX_LEFT +
NEO_MATRIX_ROWS + NEO_MATRIX_PROGRESSIVE,
NEO_RGB + NEO_KHZ800);
char hourText[3], minText[3];
int16_t scrollX = 8;
unsigned long lastScrollMs = 0;
const uint16_t scrollIntervalMs = 100;
// 👇 REPLACE these with your real home WiFi name & password
const char* WIFI_SSID = "your WiFi SSID";
const char* WIFI_PASSWORD = "passW0rd";
// 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
void updateTimeParts() {
struct tm timeinfo;
if (!getLocalTime(&timeinfo)) return;
snprintf(hourText, sizeof(hourText), "%02d", timeinfo.tm_hour);
snprintf(minText, sizeof(minText), "%02d", timeinfo.tm_min);
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);
int x = scrollX;
// 1. Draw Hours
matrix.setTextColor(matrix.Color(userColors[hourColorIdx][0], userColors[hourColorIdx][1], userColors[hourColorIdx][2]));
matrix.setCursor(x, 0);
matrix.print(hourText);
x += 12; // Move 12 pixels (2 digits * 6px)
// 2. Draw Colon
matrix.setTextColor(matrix.Color(userColors[colonColorIdx][0], userColors[colonColorIdx][1], userColors[colonColorIdx][2]));
matrix.setCursor(x, 0);
matrix.print(":");
x += 6; // Move 6 pixels
// 3. Draw Minutes
matrix.setTextColor(matrix.Color(userColors[minColorIdx][0], userColors[minColorIdx][1], userColors[minColorIdx][2]));
matrix.setCursor(x, 0);
matrix.print(minText);
matrix.show();
scrollX--;
// Total width is roughly 30 pixels (HH=12, :=6, MM=12)
if (scrollX < -30) {
scrollX = matrix.width();
// Pick NEW random colors for the next cycle
hourColorIdx = random(0, totalColors);
colonColorIdx = random(0, totalColors);
minColorIdx = random(0, totalColors);
}
}
void setup() {
Serial.begin(115200);
// Seed the random generator using an unconnected analog pin
randomSeed(analogRead(0));
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) delay(500);
// Configure time via NTP
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
Serial.println("Waiting for time...");
delay(2000); // small wait for initial sync
matrix.begin();
matrix.setTextWrap(false);
matrix.setBrightness(DAY_BRIGHTNESS);
}
void loop() {
if (millis() % 1000 == 0) updateTimeParts();
if (millis() - lastScrollMs >= scrollIntervalMs) {
lastScrollMs = millis();
scrollTime();
}
}
Ресурстар мен сілтемелер
-
Бейне
-
Ішкі🎨 Color picker Toolrobojax.com
Файлдар📁
Fritzing файлы
-
esp32-S3-supermini-tht fritzing part
esp32-S3-supermini-tht.fzpz0.02 MB