Search Code

ESP32-S3 RGB LED மேட்ரிக்ஸ் இணைய கடிகார திட்டம் - தேதியுடன் 3 இரவு நிறங்கள்

ESP32-S3 RGB LED மேட்ரிக்ஸ் இணைய கடிகார திட்டம் - தேதியுடன் 3 இரவு நிறங்கள்

ESP32-S3 RGB நியோமேட்ரிக்ஸ் இணைய கடிகாரம் தானியங்கி பகல்/இரவு பிரகாசத்துடன்

இந்த திட்டம் ஒரு ESP32-S3 RGB மேட்ரிக்ஸ் இணைய கடிகாரம் ஆகும், இது பகல் மற்றும் இரவின் போது பிரகாசத்தை தானாகவே சரிசெய்கிறது. ESP32-S3 Wi-Fi உடன் இணைகிறது, NTP சேவையகத்திலிருந்து தற்போதைய நேரத்தை ஒத்திசைக்கிறது, மேலும் 8×8 RGB நியோமேட்ரிக்ஸில் HH:MM வடிவத்தில் நேரத்தை உருட்டுகிறது. கடிகாரம் காட்சி உரைக்கு நிலையான அல்லது சுழற்சி RGB வண்ணங்களையும் ஆதரிக்கிறது.

இந்த கடிகாரம் என்ன செய்கிறது

மின்சாரம் இயக்கிய பிறகு, ESP32-S3 உங்கள் Wi-Fi நெட்வொர்க்குடன் இணைந்து இணையத்திலிருந்து தற்போதைய உள்ளூர் நேரத்தைப் பெறுகிறது. நேரம் LED மேட்ரிக்ஸில் சீராக உருளும். இரவு நேரங்களில், காட்சி தானாகவே குறைந்த பிரகாசத்திற்கு மங்குகிறது, பகலில் அது பிரகாசமான நிலைக்கு மாறுகிறது.

ESP32-s3_internet_clock_animation

பயன்படுத்தப்படும் நூலகங்கள்

இந்த ஸ்கெட்ச் பின்வரும் நூலகங்களைப் பயன்படுத்துகிறது:

#include <WiFi.h>
#include "time.h"
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>

Arduino நூலக மேலாளரிடமிருந்து Adafruit NeoMatrix ஐ நிறுவவும். Adafruit GFX Library மற்றும் Adafruit NeoPixel போன்ற அனைத்து தேவையான சார்புகளும் தானாகவே நிறுவப்படும்.

முக்கியமான பயனர் உள்ளமைவு

Wi-Fi SSID மற்றும் கடவுச்சொல் (பெரிய/சிறிய எழுத்து உணர்திறன்)

பின்வரும் மதிப்புகளை உங்கள் சொந்த Wi-Fi சான்றுகளுடன் மாற்றவும்:

const char* WIFI_SSID     = "WiFi";
const char* WIFI_PASSWORD = "passW0rd";

முக்கியம்: Wi-Fi SSID கள் பெரிய/சிறிய எழுத்து உணர்திறன் கொண்டவை. "Book" என்ற SSID "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 மணி
const int NIGHT_END_HOUR = 6;    // காலை 6 மணி

இரவு 10 மணி முதல் காலை 6 மணி வரை, இருண்ட சூழல்களில் வசதியாக இருக்க மேட்ரிக்ஸ் பிரகாசம் குறைக்கப்படுகிறது. அந்த நேரங்களுக்கு வெளியே, முழு பகல் பிரகாசம் மீட்டமைக்கப்படுகிறது. உங்கள் அறை விளக்குகளுக்கு ஏற்ப இந்த மதிப்புகளை சரிசெய்யலாம்.

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 வண்ணத் தேர்வுக் கருவியைப் பயன்படுத்தவும்: வண்ணத் தேர்வு .

நேர காட்சி மற்றும் உருட்டல்

தற்போதைய நேரம் HH:MM வடிவத்தில் வடிவமைக்கப்பட்டு ஒரு சிறிய எழுத்து இடையகத்தில் சேமிக்கப்படுகிறது. காட்சி 8 பிக்சல்கள் மட்டுமே அகலமாக இருப்பதால், உரை வலமிருந்து இடமாக சீராக உருளும். நேரம் முழுவதுமாக காட்சியை விட்டு வெளியேறியவுடன், அடுத்த பாஸுக்கு அடுத்த நிறம் (இயக்கப்பட்டிருந்தால்) தேர்ந்தெடுக்கப்படும்.

செயல்விளக்கம்

ஸ்கெட்ச்சை பதிவேற்றிய பிறகு:

  • ESP32-S3 Wi-Fi உடன் இணைகிறது
  • நேரம் இணையத்திலிருந்து ஒத்திசைக்கப்படுகிறது
  • தற்போதைய நேரம் RGB மேட்ரிக்ஸில் உருளும்
  • பிரகாசம் பகல் மற்றும் இரவுக்கு இடையில் தானாகவே மாறுகிறது
  • உரை நிறம் உங்கள் அமைப்புகளின் அடிப்படையில் நிலையாக இருக்கும் அல்லது சுழற்சி செய்யப்படும்

பதிவிறக்கங்கள் மற்றும் இணைப்புகள்

முழுமையான மூலக் குறியீடு இந்த கட்டுரைக்கு கீழே வழங்கப்பட்டுள்ளது. பாகங்கள், கருவிகள் மற்றும் தரவுத்தாள்களுக்கான இணைப்புகள் இந்த கட்டுரைக்கு கீழே கிடைக்கின்றன.

படங்கள்

ESP32 S3 Matrix
ESP32 S3 Matrix
ESP32 S3 Matrix  pin out
ESP32 S3 Matrix pin out
ESP32-S3_RGB_8x8_matrix-3
ESP32-S3_RGB_8x8_matrix-3
ESP32-S3_RGB_8x8_matrix1
ESP32-S3_RGB_8x8_matrix1
ESP32-S3_RGB_8x8_matrix-2
ESP32-S3_RGB_8x8_matrix-2
ESP32-s3_internet_clock_animation
ESP32-s3_internet_clock_animation
870-ESP32-S3 RGB LED Matrix Internte Clock Project 3 - Night Color with Date
மொழி: C++
/*
 * =====================================================================================
 * 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();
  }
}

நீங்கள் தேவைப்படும் எண்ணங்கள்

வளங்கள் மற்றும் மேற்கோள்கள்

கோப்புகள்📁

பிரிட்சிங் கோப்பு