پروژه ساعت اینترنتی ماتریس LED RGB ESP32-S3 - ۴ رنگ تصادفی

پروژه ساعت اینترنتی ماتریس LED RGB ESP32-S3 - ۴ رنگ تصادفی

ساعت اینترنتی ESP32-S3 با رنگ‌های تصادفی RGB

این پروژه یک ساعت اینترنتی ماتریس RGB ESP32-S3 است که به Wi-Fi متصل می‌شود، زمان محلی را از یک سرور NTP همگام‌سازی می‌کند و زمان را به صورت اسکرول نمایش می‌دهد.HH:MMدر این نسخه، ساعت‌ها، دو نقطه و دقیقه‌ها هر یک به صورت فرمت در ماتریس RGB NeoMatrix 8×8 داخلی نمایش داده می‌شوند.رنگ‌های تصادفیدر هر چرخه پیمایش کامل انتخاب شده، یک نمایش ساعت پویا و بازیگوش ایجاد می‌کند که به‌طور مداوم تغییر می‌کند.

ساعت_اینترنتی_انیمیشن_ESP32-s3

چطور این ساعت کار می‌کند

پس از تغذیه برد از طریق 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 GFX LibraryوAdafruit NeoPixelبه طور خودکار نصب خواهد شد.

پیکربندی مهم کاربر

پایه داده ماتریس (ماتریس RGB داخلی)

اگرچه ماتریس RGB بر روی برد یکپارچه شده است، اما پایه داده هنوز باید در شِفر (کود) تعریف شود:

#define MATRIX_PIN 14

GPIO 14 معمولاً در تخته‌های ماتریس RGB ESP32-S3 استفاده می‌شود. اگر نوع تخته شما از پایه دیگری استفاده می‌کند، این مقدار را به‌روزرسانی کنید.

SSID و رمز عبور Wi-Fi (حساس به حروف بزرگ و کوچک)

جزئیات شبکه خود را جایگزین اطلاعات ورود به سیستم Wi-Fi کنید:

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

مهم:شناسه‌های SSID وای‌فای عبارتند ازحساس به بزرگی و کوچکی حروف. یک SSID به نام"Book"فرق دارد با"book"اگر حروف بزرگ و کوچک دقیقا مطابقت نداشته باشند، ESP32-S3 از اتصال بازخواهد ماند.

سرور NTP، منطقه زمانی و تابستانی

همزمان‌سازی زمان با استفاده از یک سرور NTP اینترنتی انجام می‌شود:

const char* ntpServer = "pool.ntp.org";

زمان محلی با استفاده از UTC و تفکیک صرفه‌جویی در وقت محاسبه می‌شود:

// Toronto-ish: UTC-5, plus 1 hour DST
const long  gmtOffset_sec     = -5 * 3600;
const int   daylightOffset_sec = 3600;
  • gmtOffset_secاختلاف زمان UTC به ثانیه (بر اساس موقعیت شما تنظیم شود)
  • daylightOffset_secاستفاده کنید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;

در بازه زمانی بین ساعت ۱۰ شب تا ۶ صبح، نمایش کم نور می‌شود تا در محیط‌های تاریک از تابش خیره‌کننده کاسته شود. در ساعات روز، ماتریس به روشنایی عادی بازمی‌گردد.

رفتار رنگ RGB تصادفی

یک لیست از پیش تعریف شده از رنگ‌های RGB در یک آرایه ذخیره شده است که هر رنگ با استفاده از مقادیر قرمز، سبز و آبی تعریف شده و این مقادیر از ۰ تا ۲۵۵ متغیر هستند:

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
};

در هر دوره کامل اسکرول:

  • چنــدعدد ساعترنگی تصادفی به آنها اختصاص داده می‌شود
  • متن:دو نقطهرنگ تصادفی متفاوتی دریافت می‌کند
  • متن:دقایق اعدادیک رنگ تصادفی دیگر دریافت کنید

این ترکیب رنگی که به طور مداوم در حال تغییر است، ساعت را از نظر بصری جالب نگه می‌دارد. برای ایجاد رنگ‌های سفارشی خود، می‌توانید از ابزار انتخاب رنگ RGB استفاده کنید:انتخابگر رنگ RGB.

منطق رندرینگ زمان

زمان به سه بخش تقسیم می‌شود:

  • ساعات: HH
  • کولون: :
  • دقایق: MM

هر بخش به طور جداگانه طراحی شده است تا بتواند رنگ خود را داشته باشد، در حالی که همه بخش‌ها به صورت یکجا حرکت می‌کنند تا یک انیمیشن اسکرول نرم را در نمایشگر ۸×۸ تشکیل دهند.

تولید رنگ تصادفی

برای اطمینان از تصادفی بودن رنگ، طرح در هنگام راه‌اندازی مولد عدد تصادفی را با استفاده از یک پایه آنالوگ غیرمتصل بذر می‌زند:

randomSeed(analogRead(0));

این اطمینان می‌دهد که ترکیب‌های رنگی در هر تقویت قدرت و هر چرخه نوار مختلف هستند.

تظاهرات

پس از بارگذاری طرح و تأمین برق برد از طریق USB-C:

  • ESP32-S3 به شبکه Wi-Fi شما متصل می‌شود.
  • زمان از اینترنت همزمان‌سازی شده است
  • زمان به جلو می‌رودHH:MMقالب
  • ساعت‌ها، دو نقطه و دقیقه‌ها در هر چرخه به رنگ‌های تصادفی تغییر می‌کنند.
  • صفحه نمایش به طور خودکار در شب کم نور می‌شود.

دانلودها و پیوندها

شِفر (کود) منبع کامل در زیر این مقاله ارائه شده است. ابزارها و مراجع مفید در زیر این مقاله واصل شده‌اند.

تصاویر

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
873-ESP32-S3 RGB LED Matrix Internte Clock Project 4 - Random Color
زبان: C++
کپی شد!

منابع و مراجع

فایل‌ها📁

فایل فریزینگ