Bu eğitim şunun parçasıdır: ESP32-S3 RGB LED Matrisi
ESP32-S3 RGB Matris modülü kullanılarak hem eğlence hem de pratik uygulamalar için oluşturulabilecek harika bir proje. Diğer videolara ait bağlantılar bu yazının altında yer almaktadır.
ESP32-S3 RGB LED Matris İnternet Saati Projesi - Tarih ile 3 Gece Rengi
ESP32-S3 RGB NeoMatrix İnternet Saati ile Otomatik Gündüz/Gece Parlaklığı
Bu proje, gündüz ve gece boyunca parlaklığı otomatik olarak ayarlayan bir ESP32-S3 RGB Matrix İnternet Saatidir. ESP32-S3 Wi-Fi'ye bağlanır, bir NTP sunucusundan geçerli saati senkronize eder ve saati 8×8 RGB NeoMatrix üzerinde HH:MM formatında kaydırır. Saat ayrıca ekran metni için sabit veya döngüsel RGB renklerini destekler.

Bu saat ne yapar
Güç verildikten sonra ESP32-S3 Wi-Fi ağınıza bağlanır ve geçerli yerel saati internetten alır. Saat LED matris üzerinde sorunsuz bir şekilde kayar. Gece saatlerinde ekran otomatik olarak daha düşük bir parlaklığa kısılırken, gündüz saatlerinde daha parlak bir seviyeye geri döner.
Kullanılan kütüphaneler
Bu taslak aşağıdaki kütüphaneleri kullanır:

#include <WiFi.h>
#include "time.h"
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
Arduino Kütüphane Yöneticisi'nden Adafruit NeoMatrix kurun. Adafruit GFX Library ve Adafruit NeoPixel gibi gerekli tüm bağımlılıklar otomatik olarak kurulacaktır.

Önemli kullanıcı yapılandırması
Wi-Fi SSID ve şifresi (büyük/küçük harf duyarlı)
Aşağıdaki değerleri kendi Wi-Fi kimlik bilgilerinizle değiştirin:

const char* WIFI_SSID = "WiFi";
const char* WIFI_PASSWORD = "passW0rd";
Önemli: Wi-Fi SSID'leri büyük/küçük harf duyarlıdır. "Book" adlı bir SSID, "book" ile aynı değildir. Büyük harf kullanımı tam olarak eşleşmezse ESP32 bağlanamaz.
NTP sunucusu, saat dilimi ve yaz saati uygulaması
Saat, aşağıdaki NTP sunucusunu kullanarak zamanı senkronize eder:
const char* ntpServer = "pool.ntp.org";
Yerel saat şu ofsetler kullanılarak hesaplanır:
const long gmtOffset_sec = -5 * 3600;
const int daylightOffset_sec = 3600;
gmtOffset_sec, UTC ofsetinizi saniye cinsinden tanımlardaylightOffset_sec, yaz saati uygulaması aktifken bir saat ekler (gerekmiyorsa0kullanın)
Bu değerler şu şekilde uygulanır:
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
Otomatik gündüz / gece parlaklığı
Ekran parlaklığı, geçerli saate göre otomatik olarak değişir:
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 ile 06:00 arasında matris parlaklığı, karanlık ortamlarda rahat olması için azaltılır. Bu saatlerin dışında tam gündüz parlaklığı geri yüklenir. Bu değerleri odanızın aydınlatmasına göre ayarlayabilirsiniz.
RGB renk yapılandırması
Saat metni rengi, her kanalın 0 ile 255 arasında değiştiği RGB (Kırmızı, Yeşil, Mavi) değerleri kullanılarak tanımlanır. Birden fazla renk bir dizide saklanabilir ve otomatik olarak döngüye alınabilir:
uint8_t userColors[][3] = {
{17, 43, 171}, // Açık Mavi
{255, 0, 0}, // Kırmızı
{0, 255, 0}, // Yeşil
{255, 165, 0}, // Turuncu
{255, 0, 255} // Magenta
};
useFixedColor true olarak ayarlanırsa, saat her zaman tek bir renk kullanır. false olarak ayarlanırsa, renk saatin her tam kaydırılmasından sonra otomatik olarak değişir.
Herhangi bir renk için tam RGB değerlerini hızlıca bulmak üzere RGB Renk Seçici aracını kullanın: Renk Seçici .
Saat görüntüleme ve kaydırma
Geçerli saat HH:MM biçiminde biçimlendirilir ve küçük bir karakter tamponunda saklanır. Ekran yalnızca 8 piksel genişliğinde olduğundan, metin sağdan sola doğru sorunsuz bir şekilde kayar. Saat ekrandan tamamen çıktığında, bir sonraki geçiş için bir sonraki renk (etkinse) seçilir.
Gösterim
Taslağı yükledikten sonra:
- ESP32-S3 Wi-Fi'ye bağlanır
- Saat internetten senkronize edilir
- Geçerli saat RGB matris üzerinde kayar
- Parlaklık gündüz ve gece arasında otomatik olarak değişir
- Metin rengi sabit kalır veya ayarlarınıza göre döngüye girer
İndirmeler ve bağlantılar
Tam kaynak kodu bu makalenin altında verilmiştir. Parça, araç ve veri sayfalarına bağlantılar bu makalenin altında mevcuttur.
Bu eğitim şunun parçasıdır: ESP32-S3 RGB LED Matrisi
- ESP32-S3 RGB LED Matris Projesi 1- Temel Nokta
- ESP32-S3 RGB LED Matris Projesi 2 - Kayan Metin
- ESP32-S3 RGB LED Matris Projesi 3 - Cep telefonundan metin
- ESP32-S3 RGB LED Matris Projesi 4 - Eğim noktası
- ESP32-S3 RGB LED Matris Projesi 5 - Ok her zaman yukarı
- ESP32-S3 RGB LED Matris Projesi 6 - Cible oyunu
- ESP32-S3 RGB LED Matris Wi-Fi + NTP Saat Projesi -1 Temel Saat
- ESP32-S3 RGB LED Matris İnternet Saati Projesi - 2 Saat Çok Renkli Zaman ve Tarih Gösterimi
- ESP32-S3 RGB LED Matris İnternet Saati Projesi - 5 Gökkuşağı rengi
- ESP32-S3 RGB LED Matris İnternet Saati Projesi - 4 Rastgele renk
- 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();
}
}
İhtiyacın olabileceğini düşünüyor
-
Amazon
-
eBay
-
AliExpressPurchase ESP32-S3 RGB matrix from AliExpresss.click.aliexpress.com
-
AliExpressPurchase ESP32-S3 RGB matrix from AliExpress (2)s.click.aliexpress.com
Kaynaklar ve referanslar
-
Video
-
Dahili🎨 Color picker Toolrobojax.com
Dosyalar📁
Fritzing Dosyası
-
esp32-S3-supermini-tht fritzing part
esp32-S3-supermini-tht.fzpz0.02 MB