This tutorial is part of: ESP32-S3 RGB LED ማትሪክስ
አስደሳች እና ተግባራዊ አፕሊኬሽኖችን ለመፍጠር የESP32-S3 RGB ማትሪክስ ሞጁልን በመጠቀም አሪፍ ፕሮጀክት። ወደ ሌሎች ቪዲዮዎች የሚወስዱ አገናኞች ከዚህ ጽሑፍ በታች ይገኛሉ።
የESP32-S3 RGB LED ማትሪክስ የበይነመረብ ሰዓት ፕሮጀክት - 4 የዘፈቀደ ቀለም
ESP32-S3 የበይነመረብ ሰዓት ከዘፈቀደ RGB ቀለሞች ጋር
ይህ ፕሮጀክት ከWi-Fi ጋር የሚገናኝ፣ የአካባቢውን ሰዓት ከNTP አገልጋይ የሚያመሳስል እና ሰዓቱን በHH:MM ቅርጸት በተሰራው 8×8 RGB NeoMatrix ላይ የሚያሽከለልል ESP32-S3 RGB Matrix የበይነመረብ ሰዓት ነው። በዚህ ስሪት ውስጥ፣ ሰዓቶቹ፣ ኮሎን እና ደቂቃዎቹ እያንዳንዳቸው በየዘፈቀደ ቀለሞች በእያንዳንዱ ሙሉ የማሽከለል ዑደት ላይ ይመረጣሉ፣ ይህም ያለማቋረጥ የሚለዋወጥ እና አስደሳች የሰዓት ማሳያ ይፈጥራል።

ይህ ሰዓት እንዴት ይሰራል
ቦርዱን በ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>
Adafruit NeoMatrixን ከArduino Library Manager ይጫኑ። እንደ 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 ሰዓት DST
const long gmtOffset_sec = -5 * 3600;
const int daylightOffset_sec = 3600;
gmtOffset_sec፦ የUTC ማካካሻ በሰከንዶች (ለአካባቢዎ ያስተካክሉ)daylightOffset_sec፦ DST ንቁ በሚሆንበት ጊዜ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።
የሰዓት አቀራረብ አመክንዮ
ሰዓቱ በሦስት ክፍሎች ይከፈላል፦
- ሰዓቶች፦
HH - ኮሎን፦
: - ደቂቃዎች፦
MM
እያንዳንዱ ክፍል የራሱ ቀለም እንዲኖረው በተናጠል ይሳላል፣ ሁሉም ክፍሎች በ8×8 ማሳያ ላይ ለስላሳ የማሽከለል እነማ ለመፍጠር አብረው ይንቀሳቀሳሉ።
የዘፈቀደ ቀለም ማመንጨት
የቀለም ዘፈቀደነትን ለማረጋገጥ፣ ስኬቹ በመነሻ ጊዜ የዘፈቀደ ቁጥር አመንጪውን ያልተገናኘ የአናሎግ ፒን በመጠቀም ይዘራል፦
randomSeed(analogRead(0));
ይህ የቀለም ጥምረቶች በእያንዳንዱ ኃይል ማብራት እና በእያንዳንዱ የማሽከለል ዑደት ላይ የተለያዩ መሆናቸውን ያረጋግጣል።
ማሳያ
ስኬቹን ከጫኑ እና ቦርዱን በUSB-C ካበሩ በኋላ፦
- ESP32-S3 ከWi-Fi አውታረ መረብዎ ጋር ይገናኛል
- ሰዓት ከበይነመረብ ይመሳሰላል
- ሰዓቱ በ
HH:MMቅርጸት ይሽከለላል - ሰዓቶች፣ ኮሎን እና ደቂቃዎች በእያንዳንዱ ዑደት ወደ የዘፈቀደ ቀለሞች ይቀየራሉ
- ማሳያው በሌሊት በራስ-ሰር ይደብዝዛል
ውርዶች እና አገናኞች
የተሟላ ምንጭ ኮድ ከዚህ ጽሑፍ በታች ቀርቧል። ጠቃሚ መሣሪያዎች እና ማጣቀሻዎች ከዚህ ጽሑፍ በታች ተገናኝተዋል።
This tutorial is part of: ESP32-S3 RGB LED ማትሪክስ
- ESP32-S3 RGB LED ማትሪክስ ፕሮጀክት 1- መሰረታዊ ነጥብ
- የESP32-S3 RGB LED ማትሪክስ ፕሮጀክት 2 - የሚንቀሳቀስ ጽሑፍ
- የESP32-S3 RGB LED ማትሪክስ ፕሮጀክት 3 - ከሞባይል ስልክ የሚመጣ ጽሑፍ
- ESP32-S3 RGB LED ማትሪክስ ፕሮጀክት 4 - ዘንበል ነጥብ
- ESP32-S3 RGB LED ማትሪክስ ፕሮጀክት 5 - ቀስት ሁልጊዜ ወደ ላይ
- የESP32-S3 RGB LED ማትሪክስ ፕሮጀክት 6 - ሲብል ጨዋታ
- ESP32-S3 RGB LED ማትሪክስ ዋይ-ፋይ + NTP የሰዓት ፕሮጀክት -1 መሰረታዊ ሰዓት
- የESP32-S3 RGB LED ማትሪክስ የበይነመረብ ሰዓት ፕሮጀክት - 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
ፋይሎች📁
ፍሪትዚንግ ፋይል
-
esp32-S3-supermini-tht fritzing part
esp32-S3-supermini-tht.fzpz0.02 MB