Проект интернет-часы с матрицей RGB LED на ESP32-S3 - 4 случайных цвета

Проект интернет-часы с матрицей RGB LED на ESP32-S3 - 4 случайных цвета

Часы с интернетом на базе ESP32-S3 с случайными RGB цветами

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

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 NeoMatrixиз Диспетчера библиотек Arduino. Необходимые зависимости, такие как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";

Важно:Wi-Fi 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_secUTC смещение в секундах (откорректируйте для вашего местоположения)
  • 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-цвета

Заранее определённый список RGB-цветов хранится в массиве, где каждый цвет задаётся значениями красного, зелёного и синего, варьирующимися от 0 до 255:

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

Каждая часть рисуется индивидуально, так что она может иметь свой собственный цвет, в то время как все части движутся вместе, образуя плавную прокручиваемую анимацию на дисплее 8×8.

Случайная генерация цвета

Чтобы обеспечить случайность цвета, эскиз инициализирует генератор случайных чисел при запуске с помощью неподключенного аналогового вывода:

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++
Скопировано!

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

Файлы📁

Файл Fritzing