arduino R4 WIFI读取时间并在LED矩阵上显示

news/2025/3/18 10:04:13/

在这里插入图片描述

arduino R4 WiFi 开发板自带 WiFi 连接模块,同时带有 8×12 LED 显示矩阵。本实验开发了一个能通过WiFi连接网络,获取NTP时间,然后在LED矩阵上滚动显示的功能。

什么是 NTP 时间

NTP(Network Time Protocol,网络时间协议)是一种用于同步网络中计算机时钟的互联网协议。它的目的是使所有参与的计算机时钟与协调世界时(UTC)保持同步,误差通常在几毫秒以内。NTP 是目前仍在使用的最古老的互联网协议之一,自 1985 年以来一直在运行。

依赖的库

#include "WiFiS3.h"#include "ArduinoGraphics.h"
#include "Arduino_LED_Matrix.h"#include "WiFiUdp.h"
#include "NTPClient.h"

基于Arduino_LED_Matrix.h 控制 LED 矩阵的显示,利用ArduinoGraphics.h 进行字符的循环显示。注意,ArduinoGraphics.h 必须在Arduino_LED_Matrix.h 之前导入,否则无法正确引入 beginDraw 函数。
新建secret_key.h用来保存WiFi账号和密码

#define SECRET_SSID "WiFi名称"
#define SECRET_PASS "WiFi密码"

完整代码

#include "WiFiS3.h"
#include "secret_key.h"
#include "ArduinoGraphics.h"
#include "Arduino_LED_Matrix.h"#include "WiFiUdp.h"
#include "NTPClient.h"char ssid[] = SECRET_SSID;
char pass[] = SECRET_PASS;// NTP 服务器配置
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org", 8 * 3600, 60000);  // 东八区,北京时间//定义一个LED点阵对象
ArduinoLEDMatrix matrix;void setup(){Serial.begin(115200);delay(1000);Serial.println("Connecting to WiFi");WiFi.begin(ssid, pass);while(WiFi.status() != WL_CONNECTED){delay(500);Serial.print(".");}Serial.println("Connected to WiFi");Serial.println("IP Address: ");Serial.println(WiFi.localIP());//显示一个字符串matrix.begin();matrix.beginDraw();matrix.stroke(0xFFFFFFFF);const char text[] = "UNO R4";matrix.textFont(Font_4x6);matrix.beginText(0,1,0xFFFFFF);matrix.println(text);matrix.endText();matrix.endDraw();delay(2000);//启用时间客户端timeClient.begin();
}void loop(){timeClient.update();time_t now = timeClient.getEpochTime();// 格式化时间字符串struct tm *timeinfo;timeinfo = localtime(&now);char timeStr[30];sprintf(timeStr, "%04d-%02d-%02d %02d:%02d:%02d",timeinfo->tm_year + 1900,  // 年timeinfo->tm_mon + 1,      // 月timeinfo->tm_mday,         // 日timeinfo->tm_hour,         // 时timeinfo->tm_min,          // 分timeinfo->tm_sec);         // 秒matrix.beginDraw();matrix.stroke(0xFFFFFFFF);matrix.textScrollSpeed(100);matrix.textFont(Font_4x6);matrix.beginText(0,1,0xFFFFFF);matrix.println(timeStr);matrix.endText(SCROLL_LEFT);matrix.endDraw();delay(1000);
}

http://www.ppmy.cn/news/1580039.html

相关文章

【TCP】三次挥手,四次挥手详解--UDP和TCP协议详解

活动发起人小虚竹 想对你说: 这是一个以写作博客为目的的创作活动,旨在鼓励大学生博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧&#xff01…

《几何原本》命题I.32

《几何原本》命题I.32 三角形外角等于不相邻两内角和,三角形内角和为 18 0 ∘ 180^{\circ} 180∘。 设 △ A B C \triangle ABC △ABC 为已知三角形 延长 B C BC BC,作 C E ∥ A B CE\parallel AB CE∥AB 则 ∠ A C D ∠ A C E ∠ E C D ∠ B …

《mc百科》小引

现在的年轻人,不是玩农药,就是在打和平,几乎每到街上,想就看见农药上号的,但这些游戏,虽然宜人,但随时都能让人异化。 但有一种游戏,可以说几乎涵盖了所有文化。早其自由度高达999%…

【蓝桥杯】省赛:神奇闹钟

思路 python做这题很简单,灵活用datetime库即可 code import os import sys# 请在此输入您的代码 import datetimestart datetime.datetime(1970,1,1,0,0,0) for _ in range(int(input())):ls input().split()end datetime.datetime.strptime(ls[0]ls[1],&quo…

element ui设置结束时间为23:59:59

开始时间为00:00:00结束时间为23:59:59 在请求接口前&#xff0c;用substring取结束时间的年月日&#xff0c;并替换时间值即可 <el-formref"searchForm":model"searchForm":inline"true"size"mini"keyup.enter.native"getDa…

联想台式电脑启动项没有U盘

开机按F12&#xff0c;进入启动设备菜单&#xff0c;发现这里没有识别到插在主机的U盘&#xff1f; 解决方法 1、选上图的Enter Setup或者开机按F2&#xff0c;进入BIOS设置 选择Startup -> Primary Boot Sequence 2、选中“Excludeed from boot order”中U盘所在的一行 …

解决 Android Studio “waiting for all target devices to come online“ 卡住问题

解决 Android Studio "waiting for all target devices to come online" 卡住问题 步骤 1&#xff1a;完全关闭当前模拟器 点击模拟器窗口右上角的 关闭按钮。打开任务管理器&#xff08;Windows&#xff1a;CtrlShiftEsc / Mac&#xff1a;活动监视器&#xff09…

基于机器学习的睡眠障碍预测模型对比分析

1、研究背景 2、数据概述 3. 数据可视化分析 (1) 各职业的平均睡眠时长 (2) BMI 分布 (3) 血压收缩压与舒张压的关系 (4) 每日步数的分布 (5) 睡眠质量的分布 4. 机器学习模型对比 (1) 决策树模型