Proyecto de reloj en Internet con matriz de LED RGB ESP32-S3 - 4 colores aleatorios

Proyecto de reloj en Internet con matriz de LED RGB ESP32-S3 - 4 colores aleatorios

Reloj de Internet ESP32-S3 con colores RGB aleatorios

Este proyecto es un reloj de Internet con matriz RGB ESP32-S3 que se conecta a Wi-Fi, sincroniza la hora local desde un servidor NTP y desplaza la hora enHH:MMformato a través de la NeoMatrix RGB de 8×8 incorporada. En esta versión, las horas, el dos puntos y los minutos se representan cada uno encolores al azarseleccionado en cada ciclo de desplazamiento completo, creando una exhibición de reloj dinámica y juguetona que cambia constantemente.

ESP32-s3_animación_reloj_internet

Cómo funciona este reloj

Después de alimentar la placa a través de USB-C, el ESP32-S3 se conecta a tu red Wi-Fi y recupera la hora local actual de Internet. La hora se divide en tres partes: horas, dos puntos y minutos, y cada parte se dibuja por separado en la matriz RGB. Cuando el texto se desplaza completamente fuera de la pantalla, se eligen nuevos colores aleatorios para el siguiente paso.

Bibliotecas utilizadas

Este boceto utiliza las siguientes bibliotecas:

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

InstalarAdafruit NeoMatrixdesde el Administrador de Bibliotecas de Arduino. Dependencias requeridas comoAdafruit GFX LibraryyAdafruit NeoPixelse instalará automáticamente.

Configuración de usuario importante

Pin de datos de la matriz (matriz RGB integrada)

Aunque la matriz RGB está integrada en la placa, el pin de datos aún debe estar definido en el código:

#define MATRIX_PIN 14

GPIO 14 se utiliza comúnmente en placas de matriz RGB ESP32-S3. Si la variante de su placa utiliza un pin diferente, actualice este valor en consecuencia.

SSID y contraseña de Wi-Fi (distingue entre mayúsculas y minúsculas)

Reemplace las credenciales de Wi-Fi con los detalles de su propia red:

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

Importante:Las SSID de Wi-Fi sonsensible a mayúsculas y minúsculas. Un SSID llamado"Book"no es lo mismo que"book"Si la capitalización no coincide exactamente, el ESP32-S3 no podrá conectarse.

Servidor NTP, zona horaria y horario de verano

La sincronización de tiempo se realiza utilizando un servidor NTP de internet:

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

La hora local se calcula usando UTC y los desplazamientos por horario de verano:

// Toronto-ish: UTC-5, plus 1 hour DST
const long  gmtOffset_sec     = -5 * 3600;
const int   daylightOffset_sec = 3600;
  • gmtOffset_sec: Desplazamiento UTC en segundos (ajuste según su ubicación)
  • daylightOffset_secUsar3600cuando el horario de verano está activo, o0de lo contrario

Estos ajustes se aplican utilizando:

configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);

Brillo automático de día/noche

El reloj ajusta automáticamente el brillo según la hora actual:

const int DAY_BRIGHTNESS = 40;
const int NIGHT_BRIGHTNESS = 5;
const int NIGHT_START_HOUR = 22;
const int NIGHT_END_HOUR = 6;

Entre las 10 PM y las 6 AM, la pantalla se atenúa para reducir el deslumbramiento en entornos oscuros. Durante las horas del día, la matriz vuelve a su brillo normal.

Comportamiento aleatorio de color RGB

Una lista predefinida de colores RGB se almacena en un array, donde cada color se define utilizando valores de Rojo, Verde y Azul que varían de 0 a 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
};

En cada ciclo completo de desplazamiento:

  • Eldígitos de horase les asigna un color aleatorio
  • Eldos puntosrecibe un color aleatorio diferente
  • Eldígitos de un minutorecibir otro color aleatorio

Esto produce una combinación de colores en constante cambio que mantiene el reloj visualmente interesante. Para crear tus propios colores personalizados, puedes usar la herramienta del Selector de Color RGB:Selector de Color RGB.

Lógica de renderizado de tiempo

El tiempo se divide en tres componentes:

  • Horas: HH
  • Dos puntos: :
  • Minutos: MM

Cada parte se dibuja de forma individual para que pueda tener su propio color, mientras que todas las partes se mueven juntas para formar una animación de desplazamiento suave en la pantalla de 8×8.

Generación de colores aleatorios

Para garantizar la aleatoriedad del color, el boceto siembra el generador de números aleatorios al inicio utilizando un pin analógico no conectado:

randomSeed(analogRead(0));

Esto asegura que las combinaciones de colores sean diferentes en cada potenciador y en cada ciclo de desplazamiento.

Demostración

Después de cargar el boceto y alimentar la placa a través de USB-C:

  • El ESP32-S3 se conecta a tu red Wi-Fi.
  • El tiempo está sincronizado desde internet.
  • El tiempo se desplaza hacia adentro.HH:MMformato
  • Las horas, los dos puntos y los minutos cambian a colores aleatorios en cada ciclo.
  • La pantalla se oscurece automáticamente por la noche.

Descargas y enlaces

El código fuente completo se proporciona a continuación de este artículo. Herramientas y referencias útiles están vinculadas a continuación de este artículo.

Imágenes

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
Idioma: C++
¡Copiado!

Recursos y referencias

Archivos📁

Archivo de Fritzing