本教程是的一部分: ESP32-S3 RGB LED 点阵
这是一个很棒的项目,可以使用 ESP32-S3 RGB 矩阵模块进行创作,兼具趣味性和实用性。
ESP32-S3 RGB LED矩阵 Wi-Fi + NTP时间钟表项目 -1 基本钟表
ESP32-S3互联网时钟,配备8×8 NeoMatrix(Wi-Fi + NTP时间)
这个项目将一个ESP32-S3和一个8×8 RGB NeoMatrix(NeoPixel/WS2812)变成一个微型互联网时钟。ESP32连接到Wi-Fi,从NTP服务器同步本地时间,然后滚动显示时间。HH:MM在8×8显示屏上。

它是如何工作的(高层次)
ESP32-S3使用以下方式连接到您的路由器<WiFi.h>.
它通过使用NTP服务器同步时间"time.h"和configTime().
时间格式为HH:MM并保存到一个小文本缓冲区中。
4) NeoMatrix 将文本渲染并在 8×8 面板上滚动。

RGB颜色
时钟文本颜色使用 RGB(红、绿、蓝)值进行控制,其中每个颜色通道的范围为 0 到 255,不同的组合会在 NeoMatrix 上创建不同的颜色。通过调整color_RED,color_GREEN和color_BLUE变量,您可以轻松自定义时钟的外观为任何您喜欢的颜色。要快速找到特定颜色的确切RGB值,您可以在此处使用在线RGB颜色选择器工具: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)
使用0-255的值设置时钟文本颜色:
//set the color of display made of Red, Green and Blue
unsigned int color_RED = 17;
unsigned int color_GREEN = 43;
unsigned int color_BLUE = 171;这些值在这里使用:
matrix.setTextColor(matrix.Color(color_RED, color_GREEN, color_BLUE));注意:如果您将所有颜色设置为 0(黑色),文本将变得不可见。草图包含一个安全检查:
// if user set all colors to 0, the display will be turned off so set it green
if (color_RED == 0 && color_GREEN == 0 && color_BLUE == 0) {
color_GREEN = 200;
}这确保了矩阵由于不可见的颜色设置而不会看起来“死”。
2) Wi-Fi SSID 和密码
将这些替换为您的真实 Wi-Fi 名称和密码:
const char* WIFI_SSID = "WiFi";
const char* WIFI_PASSWORD = "passW0rd";在启动期间,ESP32 在串口监视器中打印连接进度,约 15 秒后超时(30 次重试 × 500 毫秒)。
NTP 服务器
默认的 NTP 服务器是:
const char* ntpServer = "pool.ntp.org";您可以保持原样。如果您想使用本地服务器,请将主机名替换为您首选的 NTP 服务器。
时区偏移和夏令时偏移
这两个设置控制当地时间:
// Toronto-ish: UTC-5, plus 1 hour DST
const long gmtOffset_sec = -5 * 3600; // -5 hours
const int daylightOffset_sec = 3600; // +1 hour for DST如何设置它们:
gmtOffset_sec= (UTC时区偏移小时) × 3600。例如:UTC-5 →-5*3600, UTC+2 →2*3600.daylightOffset_sec=0如果您不想进行夏令时调整,或者3600如果您的地区目前正在实施夏令时(+1小时)。
这些在这里应用:
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);显示配置
矩阵数据引脚
数据引脚在这里定义:
#define MATRIX_PIN 14如果您的接线使用不同的GPIO,请将此数字更改为匹配。
NeoMatrix 布局 + 颜色顺序
您的矩阵初始化如下:
Adafruit_NeoMatrix matrix(8, 8, MATRIX_PIN,
NEO_MATRIX_TOP + NEO_MATRIX_LEFT +
NEO_MATRIX_ROWS + NEO_MATRIX_PROGRESSIVE,
NEO_RGB + NEO_KHZ800);显示看起来“错误”的两个常见原因:
- 旋转 / 接线方向:如果文本显示为倒置或镜像,请调整。
NEO_MATRIX_*标志(顶部/底部,左/右,行/列,逐步/锯齿状)。 - 颜色顺序:此代码使用
NEO_RGB一些面板是NEO_GRB如果红色/绿色/蓝色不匹配,请更改。NEO_RGB到正确的顺序。
亮度
亮度设置为initMatrix():
matrix.setBrightness(40);提高以获得更亮的显示,降低以减少热量和功耗。
时间是如何生成的HH:MM
时钟将格式化时间存储在一个6个字符的缓冲区中:
char timeText[6] = "00:00";那么updateTimeText()读取NTP同步的本地时间并写入文本:
// Format HH:MM
snprintf(timeText, sizeof(timeText), "%02d:%02d",
timeinfo.tm_hour,
timeinfo.tm_min);这在主循环中每秒更新一次。
在8×8显示屏上滚动的工作原理
一个8×8的矩阵太窄了,无法显示。HH:MM立即,因此草图滚动文本。它在变化的X位置绘制时间。scrollX),然后在每次更新时向左移动一个像素。
int16_t scrollX = 8;
const uint16_t scrollIntervalMs = 120;每个滚动步骤:
matrix.fillScreen(0);
matrix.setCursor(scrollX, 0);
matrix.print(timeText);
matrix.show();
scrollX--;当文本完全退出左侧时,代码将其重置以从右边缘重新开始:
int16_t textWidth = 30;
if (scrollX < -textWidth) {
scrollX = matrix.width();
}串口监视器输出(调试)
该草图打印有用的消息:
- Wi-Fi连接进度和IP地址
- 时间同步是否成功
- 格式化的时间字符串(例如,
Time text: 14:32)
如果显示为空,则串行监视器是首先要检查的地方,以确认 Wi-Fi 和 NTP 是否正常工作。
项目演示
上传并重置后:
- ESP32连接到Wi-Fi
- 从同步时间
pool.ntp.org - 演出
OK简要介绍一下矩阵 - 不断滚动当前时间为
HH:MM
下载和链接
完整代码在本文下方提供。零件、工具和数据表也在本文下方链接。
本教程是……的一部分: ESP32-S3 RGB LED 点阵
- ESP32-S3 RGB LED Matrix Project 1- Basic Dot
- ESP32-S3 RGB LED Matrix Project 2 - Scrolling Text
- ESP32-S3 RGB LED Matrix Project 3 - Text from mobile phone
- ESP32-S3 RGB LED Matrix Project 4 - Tilt dot
- ESP32-S3 RGB LED Matrix Project 5 - Arrow always up
- ESP32-S3 RGB LED Matrix Project 6 - Cible game
- ESP32-S3 RGB LED矩阵网络时钟项目 - 2个时钟多彩时间和日期显示
- ESP32-S3 RGB LED矩阵互联网时钟项目 - 带日期的3种夜间颜色
- ESP32-S3 RGB LED 矩阵网络时钟项目 - 5 种彩虹色
- ESP32-S3 RGB LED矩阵互联网时钟项目 - 4种随机颜色
- ESP32-S3 RGB LED矩阵测试,RGB,GRB设置
|||您可能需要的东西
-
亚马逊从亚马逊购买ESP32-S3 RGB矩阵amzn.to
-
易趣从eBay购买ESP32-S3 RGB矩阵ebay.us
-
全球速卖通从AliExpress购买ESP32-S3 RGB矩阵 (2)s.click.aliexpress.com
-
全球速卖通在AliExpress上购买ESP32-S3 RGB矩阵s.click.aliexpress.com
资源与参考
-
视频
文件📁
Fritzing 文件
-
esp32-S3-supermini-tht fritzing part
esp32-S3-supermini-tht.fzpz0.02 MB