ESP8266+tm1650+48行arduino代码 制作迷你数码管NTP时钟 开源带库-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10324|回复: 15

ESP8266+tm1650+48行arduino代码 制作迷你数码管NTP时钟 开源带库

[复制链接]
发表于 2019-9-13 13:59 | 显示全部楼层 |阅读模式
用esp8266 mini D1 开发板作为基础平台, 做一个NTP校时的迷你数码管时钟。原来想用一个成品Tm1650显示模块做,但不想用导线连接,已有的模块用起来不够利索,没有做到合适的,后来干脆自己画块板
自己画的这个板与mini d1开发板差不多大小,可以通过排针排座连接在一起,由于面积确实小,只能刚好用0.36的4位数码管,这个尺寸的数码有一点不好,
没有即有带4个小数点和时钟点的数码管0.36共阴的数码管只找到红色,白色2种,要想用其它颜色得用共阳的才有


开发环境为 arduino IDE 1.8.5 for ESP8266
代码很简单,只有48行肯定要用到库了,除自带库 用到了tm1650驱动库,NTPClient 2个库,这个两个库都可以在IDE库管理中找到
这个两个库都很简洁,有兴趣可以研究一下,实现更多功能

校时是初次上电校时,然后就按设定的时间间隔校一次,具体过程可以看一下NTPClient ,而计时是NTPClient 库中使用millis()时差实现
所以只要获取时分数据显示出来即可,loop中只负责跳秒点和刷新显示


只要连上了wfii,名称和密码不变,上电就自动连接NTP服务器校时,自动定时更新


基本功能有注释,这个只是一个框架代码,还有更大的发挥空间,比如加几行引用一个wifimanager库就可以实现ap配网了,可能除掉注释也不会超过50行


r1.jpg
w1.jpg
D1_D1.jpg
D1_d_coin.jpg

[mw_shl_code=arduino,true]#include <NTPClient.h>
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <Wire.h>
#include <TM1650.h>
TM1650 d;
//填入要连接的路由器的SSID和密码
const char *ssid     = "<SSID>";//
const char *password = "<PASSWORD>";//
WiFiUDP ntpUDP;
//时区北京时间,每隔10分钟同步时间stdtime.gov.hk(香港天文台服务器,快),cn.pool.ntp.org
NTPClient timeClient(ntpUDP, "stdtime.gov.hk", 8*3600, 10*60*1000);
int time_h=0,time_m=0;
String time_str="";
char time_show[]="    ";
void setup(){
    Serial.begin(115200);
    Wire.begin(12,14); //SDA-12,SCL-14 接TM1650 SDA,SCL
    d.init();
    d.setBrightnessGradually(5);
    d.displayString("boot");
    WiFi.begin(ssid, password);
    while ( WiFi.status() != WL_CONNECTED ) {
    delay ( 500 );
    Serial.print ( "." );
  }
     timeClient.begin();
}
void loop() {
           if(timeClient.update()){
            time_h = timeClient.getHours();
            time_m = timeClient.getMinutes();
            time_str=Num2Str(time_h)+Num2Str(time_m);
            strcpy(time_show,time_str.c_str());
            d.displayString(time_show);
            d.setDot(1,true);
              delay(500);
            d.setDot(1,false);
             delay(500);
             Serial.println(timeClient.getFormattedTime());
           }
           else
           {d.displayString("-SN-"); d.setDot(1,false);}//
}
//数字首位补零
String Num2Str(int num) {
  if (num<10) { return "0" + String(num);} else { return String(num);}
}[/mw_shl_code]

Mini NTPCLock.rar

12.81 KB, 下载次数: 233

mini NTP时钟源码和库

发表于 2020-2-3 18:42 | 显示全部楼层
ESP8266+tm1650+48行arduino代码 制作迷你数码管NTP时钟 开源带库
https://www.arduino.cn/forum.php ... &fromuid=204364
(出处: Arduino中文社区)
发表于 2020-2-12 12:06 | 显示全部楼层
学习了,谢谢!
发表于 2020-4-14 22:11 | 显示全部楼层
做得好漂亮。
这要是能驱动WS2812灯条,做个大的放在客厅中的时钟了就更酷了
发表于 2020-4-17 21:27 | 显示全部楼层
谢谢分享,不错的,学习了
发表于 2020-6-16 12:50 | 显示全部楼层
标注一下,晚上去练习练习
发表于 2020-8-5 14:20 | 显示全部楼层
没见过这么帅的楼主!! 分享精神 太棒啦
发表于 2020-10-20 15:48 | 显示全部楼层
本帖最后由 lzm1019 于 2020-10-20 15:50 编辑

手头有不同尺寸的管子(0.36寸,0.4寸和0.56寸)。
只有0.4寸管子是时钟管,测试ok。一时好奇,换上0.36寸和0.56寸,也能工作,只是中间的2点闪烁切成了第2个8字符的dp点闪烁。
---
0.4.png
0.36.png
0.56.png
发表于 2020-12-2 12:52 | 显示全部楼层
TM1637能用吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 08:31 , Processed in 0.116379 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表