惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
B
Blog RSS Feed
Recent Announcements
Recent Announcements
Vercel News
Vercel News
M
MIT News - Artificial intelligence
阮一峰的网络日志
阮一峰的网络日志
L
LangChain Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Security Blog
Microsoft Security Blog
H
Help Net Security
T
The Blog of Author Tim Ferriss
Y
Y Combinator Blog
G
Google Developers Blog
罗磊的独立博客
爱范儿
爱范儿
宝玉的分享
宝玉的分享
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园_首页
S
SegmentFault 最新的问题
WordPress大学
WordPress大学
月光博客
月光博客
人人都是产品经理
人人都是产品经理
Apple Machine Learning Research
Apple Machine Learning Research

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
arduino WIFI读取时间并在LED矩阵上显示 - 少数派
2025-03-12 · via 少数派

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);
}