Проект интернет-часов на матрице RGB LED ESP32-S3 - 5 радуга цветов

Проект интернет-часов на матрице RGB LED ESP32-S3 - 5 радуга цветов

Часы Интернета на базе ESP32-S3 с эффектом радужного цвета

Этот проект представляет собой интернет-часовой RGB-матрицы на базе ESP32-S3, который подключается к Wi-Fi, синхронизирует локальное время с NTP-сервером и прокручивает время вHH:MMформат на встроенном матрице RGB NeoMatrix размером 8×8. В отличие от версий с однотонными или случайными цветами, этот часы используют плавныйэффект радуги, где каждый символ непрерывно меняет цвет в спектре RGB при прокрутке. Цифровые часы также периодически отображают дату и автоматически регулируют яркость между дневным и ночным временем.

ESP32-S3 интернет-часы анимация

Как работают эти часы

После подключения питания через USB-C, ESP32-S3 подключается к вашей Wi-Fi сети и получает текущее местное время из интернета. Дисплей обычно прокручивает время, но с установленным интервалом переключается, чтобы показать дату. И время, и дата отображаются с использованием динамического радужного эффекта, создавая яркий и анимированный дисплей на маленьком матрице 8×8.

Используемые библиотеки

Эскиз основывается на следующих библиотеках:

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

УстановитьAdafruit NeoMatrixиспользуя Менеджер библиотек Arduino. Его зависимости, включаяAdafruit GFX LibraryиAdafruit NeoPixel, будет установлено автоматически.

Важная конфигурация пользователя

Пин данных матрицы (встроенная RGB-матрица)

Хотя RGB-матрица подключена к плате ESP32-S3, пин данных все равно должен быть определен в коде:

#define MATRIX_PIN 14

GPIO 14 обычно используется на матрицах RGB ESP32-S3. Если ваша модификация платы использует другой пин, обновите это значение.

SSID и пароль Wi-Fi (чувствительны к регистру)

Замените учетные данные Wi-Fi на данные вашей сети:

const char* WIFI_SSID     = "your WIFI";
const char* WIFI_PASSWORD = "passW0rd";

Важно:Wi-Fi SSID-ы эточувствительный к регистру. SSID с именем"Book"не то же самое, что"book"Если регистр букв не совпадает точно, ESP32-S3 не сможет подключиться.

Сервер NTP, часовой пояс и переход на летнее время

Часы синхронизируют время, используя интернет NTP сервер:

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

Местное время рассчитывается с использованием этих смещений:

// Toronto-ish: UTC-5, plus 1 hour DST
const long  gmtOffset_sec     = -5 * 3600;
const int   daylightOffset_sec = 3600;
  • gmtOffset_secсдвиг UTC в секундах (пример: UTC-5 =-5 * 3600)
  • 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;

В период с 10 вечера до 6 утра матрица тускнеет, чтобы уменьшить блики. В дневное время восстанавливается нормальная яркость.

Эффект радуги

Этот проект использует классическое RGB цветовое колесо для генерации плавных радужных цветов. Каждый символ рисуется с немного другим цветовым сдвигом, и цвета изменяются со временем, создавая плавную радужную анимацию.

// Helper to create Rainbow Colors
uint32_t Wheel(byte WheelPos) {
  WheelPos = 255 - WheelPos;
  if (WheelPos < 85) {
    return matrix.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  }
  if (WheelPos < 170) {
    WheelPos -= 85;
    return matrix.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
  WheelPos -= 170;
  return matrix.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}

По мере пролистывания текста каждый символ проходит через спектр RGB, создавая непрерывный радужный эффект, который особенно впечатляюще смотрится на маленьком дисплее 8×8.

Поведение отображения времени и даты

Часы поддерживают отдельные буферы для времени и даты:

  • Время: HH:MM
  • Дата: MMM DD(напримерJAN 08)

Дата отображается с фиксированным интервалом:

const uint32_t dateIntervalMs = 60000; // Show date every 1 minute

В конце каждого полного цикла прокрутки код решает, продолжать ли показывать время или переключиться на дату.

Логика прокрутки на матрице 8×8

Поскольку дисплей шириной всего 8 пикселей, текст плавно прокручивается справа налево. Как только текст полностью выходит с экрана, курсор сбрасывается, и для следующего прохода загружается следующий контент (время или дата).

Демонстрация

После загрузки схемы и питания платы через USB-C:

  • ESP32-S3 подключается к вашей сети Wi-Fi.
  • Время синхронизировано с интернетом
  • Время протекает.HH:MMформат
  • Дата появляется периодически.
  • Весь текст отображается с плавным анимированным радужным эффектом.
  • Экран автоматически затемняется ночью иBrightens днем.

Загрузки и ссылки

Полный исходный код представлен ниже этой статьи. Полезные инструменты и ссылки, включая RGB Color Picker, также приведены ниже этой статьи.

Изображения

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
872-ESP32-S3 RGB LED Matrix Internte Clock Project 5 - Rainbow Color
Язык: C++
Скопировано!

Ресурсы и ссылки

Файлы📁

Файл Fritzing