This tutorial is part of: ESP32-S3 RGB LED матрица
Одличен проект за креирање за забавни и практични апликации со користење на ESP32-S3 RGB Matrix модулот. Линкови до други видеа се наоѓаат под оваа статија.
ESP32-S3 RGB LED матричен интернет часовник проект - 3 ноќни бои со датум
ESP32-S3 RGB NeoMatrix интернет часовник со автоматска дневна/ноќна осветленост
Овој проект е ESP32-S3 RGB Matrix интернет часовник кој автоматски ја прилагодува осветленоста во текот на денот и ноќта. ESP32-S3 се поврзува на Wi-Fi, го синхронизира моменталното време од NTP сервер и го прикажува времето во HH:MM формат преку 8×8 RGB NeoMatrix. Часовникот исто така поддржува фиксни или циклични RGB бои за текстот на екранот.

Што прави овој часовник
По вклучувањето, ESP32-S3 се поврзува на вашата Wi-Fi мрежа и го презема моменталното локално време од интернет. Времето непречено се движи преку LED матрицата. Во текот на ноќните часови, екранот автоматски се затемнува на помала осветленост, додека во текот на денот се враќа на посветло ниво.
Користени библиотеки
Овој код ги користи следниве библиотеки:

#include <WiFi.h>
#include "time.h"
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
Инсталирајте го Adafruit NeoMatrix од Arduino Library Manager. Сите потребни зависности како Adafruit GFX Library и Adafruit NeoPixel ќе се инсталираат автоматски.

Важна корисничка конфигурација
Wi-Fi SSID и лозинка (осетливи на големи/мали букви)
Заменете ги следниве вредности со вашите 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
Помеѓу 22:00 и 6:00 часот, осветленоста на матрицата се намалува за да биде удобна во темни средини. Надвор од тие часови, се враќа целосната дневна осветленост. Можете да ги прилагодите овие вредности според осветлувањето на вашата просторија.
RGB конфигурација на бои
Бојата на текстот на часовникот е дефинирана со RGB (црвена, зелена, сина) вредности, каде што секој канал се движи од 0 до 255. Повеќе бои може да се чуваат во низа и автоматски да се менуваат:
uint8_t userColors[][3] = {
{17, 43, 171}, // Светло сина
{255, 0, 0}, // Црвена
{0, 255, 0}, // Зелена
{255, 165, 0}, // Портокалова
{255, 0, 255} // Магента
};
Ако useFixedColor е поставено на true, часовникот секогаш користи една боја. Ако е поставено на false, бојата автоматски се менува по секое целосно поминување на времето.
За брзо пронаоѓање на точните RGB вредности за било која боја, користете ја алатката RGB Color Picker: Color Picker .
Приказ на времето и движење
Моменталното време е форматирано како HH:MM и се чува во мал бафер за знаци. Бидејќи екранот е широк само 8 пиксели, текстот непречено се движи од десно кон лево. Откако времето целосно ќе го напушти екранот, следната боја (ако е овозможена) се избира за следниот премин.
Демонстрација
По поставувањето на кодот:
- ESP32-S3 се поврзува на Wi-Fi
- Времето се синхронизира од интернет
- Моменталното време се движи преку RGB матрицата
- Осветленоста автоматски се менува помеѓу ден и ноќ
- Бојата на текстот останува фиксна или се менува според вашите поставки
Преземања и линкови
Целосниот изворен код е даден подолу во овој напис. Линкови до делови, алатки и технички спецификации се достапни подолу во овој напис.
This tutorial is part of: ESP32-S3 RGB LED матрица
- ESP32-S3 RGB LED матричен проект 1 - Основна точка
- ESP32-S3 RGB LED матричен проект 2 - Лизгачки текст
- Проект 3 со RGB LED матрица на ESP32-S3 - Текст од мобилен телефон
- Проект 4 со RGB LED матрица на ESP32-S3 - Тилт точка
- ESP32-S3 RGB LED матричен проект 5 - Стрелка секогаш нагоре
- ESP32-S3 RGB LED матрица проект 6 - Игра „Цел“
- ESP32-S3 RGB LED матрица Wi-Fi + NTP часовник проект -1 Основен часовник
- Проект за интернет часовник со RGB LED матрица базиран на ESP32-S3 - 2 часовници со повеќебоен приказ на време и датум
- Проект за интернет часовник со RGB LED матрица базиран на ESP32-S3 - 5 виножито боја
- Проект за интернет часовник со RGB LED матрица базиран на ESP32-S3 - 4 случајни бои
- 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();
}
}
Things you might need
-
Amazon
-
eBay
-
AliExpressPurchase ESP32-S3 RGB Matrix from AliExpresss.click.aliexpress.com
-
AliExpressPurchase ESP32-S3 RGB Matrix from AliExpress (2)s.click.aliexpress.com
Resources & references
-
Video
-
Internal🎨 Color picker Toolrobojax.com
Files📁
Fritzing File
-
esp32-S3-supermini-tht fritzing part
esp32-S3-supermini-tht.fzpz0.02 MB