Этот учебник является частью: ESP32-S3 RGB LED матрица
Замечательный проект для создания развлекательных и практических приложений с использованием модуля RGB-матрицы ESP32-S3. Ссылки на другие видеоролики находятся ниже этой статьи.
Проект интернет-часов на матрице RGB LED ESP32-S3 - 3 ночных цвета с датой
ESP32-S3 RGB NeoMatrix Интернет-часы с автоматической регулировкой яркости день/ночь
Этот проект представляет собой RGB-матрицу интернет-часов на базе ESP32-S3, которая автоматически регулирует яркость в течение дня и ночи. ESP32-S3 подключается к Wi-Fi, синхронизирует текущее время с NTP-сервера и прокручивает время вHH:MMформат на матрице 8×8 RGB NeoMatrix. Часы также поддерживают фиксированные или цикличные RGB цвета для отображаемого текста.

Что делает эти часы
После включения ESP32-S3 подключается к вашей Wi-Fi сети и получает текущее местное время из интернета. Время плавно прокручивается по светодиодной матрице. В ночные часы дисплей автоматически затемняется до низкой яркости, а днем снова переключается на более яркий уровень.
Используемые библиотеки
Этот скетч использует следующие библиотеки:

#include <WiFi.h>
#include "time.h"
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>УстановитьAdafruit NeoMatrixиз Менеджера библиотек Arduino. Все необходимые зависимости, такие какAdafruit GFX LibraryиAdafruit NeoPixelбудет установлен автоматически.

Важная конфигурация пользователя
SSID и пароль Wi-Fi (учитывается регистр)
Замените следующие значения на свои данные для Wi-Fi:

const char* WIFI_SSID = "WiFi";
const char* WIFI_PASSWORD = "passW0rd";Важно:Wi-Fi SSID'ы эторегистронезависимый. Имя SSID"Book"естьнетто же самое как"book"Если регистры не совпадают точно, ESP32 не сможет установить соединение.
Сервер NTP, часовой пояс и переход на летнее время
Часы синхронизируют время, используя следующий NTP-сервер:
const char* ntpServer = "pool.ntp.org";Местное время рассчитывается с использованием этих смещений:
const long gmtOffset_sec = -5 * 3600;
const int daylightOffset_sec = 3600;gmtOffset_secопределяет ваш смещение UTC в секундахdaylightOffset_secдобавляет один час, когда активно летнее время (используйте0если не нужно)
Эти значения применяются с:
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);Автоматическая яркость днем / ночью
Яркость дисплея автоматически изменяется в зависимости от текущего часа:
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С 10 вечера до 6 утра яркость матрицы уменьшается, чтобы создать комфортные условия в темной обстановке. Вне этих часов восстанавливается полная дневная яркость. Вы можете настроить эти значения в соответствии с освещением в вашей комнате.
Конфигурация цвета RGB
Цвет текста часов определяется с помощью значений RGB (красный, зеленый, синий), где каждый канал варьируется от 0 до 255. Несколько цветов могут храниться в массиве и автоматически переключаться.
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
};ЕслиuseFixedColorустановлено наtrue, часы всегда используют один цвет. Если установлен наfalseцвет автоматически меняется после каждого полного прокручивания времени.
Чтобы быстро найти точные значения RGB для любого цвета, используйте инструмент выбора цвета RGB:RGB Выбор цвета.
Отображение времени и прокрутка
Текущее время отформатировано какHH:MMи хранится в небольшом буфере символов. Поскольку дисплей шириной всего 8 пикселей, текст плавно прокручивается справа налево. Как только время полностью покидает дисплей, для следующего прохода выбирается следующий цвет (если он включен).
Демонстрация
После загрузки эскиза:
- ESP32-S3 подключается к Wi-Fi
- Время синхронизировано с интернетом.
- Т текущее время прокручивается по RGB матрице
- Яркость автоматически меняется между днем и ночью.
- Цвет текста остается фиксированным или изменяется в зависимости от ваших настроек.
Загрузки и ссылки
Полный исходный код представлен ниже этой статьи. Ссылки на части, инструменты и технические параметры доступны ниже этой статьи.
Этот учебник является частью: ESP32-S3 RGB LED матрица
- Проект матрицы RGB LED ESP32-S3 1 - Основной штрих
- Проект RGB LED матрицы ESP32-S3 2 - Прокручиваемый текст
- Проект RGB LED матрицы ESP32-S3 3 - Текст с мобильного телефона
- Проект RGB LED матрицы ESP32-S3 4 - Наклоненная точка
- Проект матрицы RGB LED на ESP32-S3 5 - Стрелка всегда вверх
- Проект матрицы RGB LED ESP32-S3 6 - Игра цель
- ESP32-S3 RGB LED матрица Wi-Fi + NTP проект часы - 1 базовые часы
- ESP32-S3 RGB светодиодная матрица Интернет-часы - 2-часовой многоцветный дисплей времени и даты
- Проект интернет-часов на матрице RGB LED ESP32-S3 - 5 радуга цветов
- Проект интернет-часы с матрицей RGB LED на ESP32-S3 - 4 случайных цвета
- Тест матрицы RGB LED ESP32-S3 для настройки RGB, GRB
/*
* =====================================================================================
* 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();
}
}
Вещи, которые могут вам понадобиться
-
Амазонка
-
eBay
-
АлиЭкспрессКупить ESP32-S3 RGB-матрицу на AliExpresss.click.aliexpress.com
-
АлиЭкспрессПриобретите ESP32-S3 RGB Matrix на AliExpress (2)s.click.aliexpress.com
Ресурсы и ссылки
-
Внутренний🎨 Инструмент выбора цветаrobojax.com
Файлы📁
Файл Fritzing
-
esp32-S3-supermini-tht часть фритзинга
esp32-S3-supermini-tht.fzpz0.02 MB