一、前言
1)无线智能控制模块1个 (Esp8266)
2)4段共阳数码管(0.36英寸)
3)DS18B20传感器2根(1米和2米),杜邦线8根
4)arduino 1.8.13
5)调试数码管 a.显示温度 b.显示时间
二、注意事项及主要代码
#include "TM1637.h"
//四位0.36英寸-12脚8级灰度可调 https://github.com/Seeed-Studio/Grove_4Digital_Display
//注意库文件引用方法 找到此对应的库,注意不要错了哦!arduino有个库容易引用错
#define CLK_PIN 0
#define CLK_PIN 2
TM1637 tm1637(CLK_PIN,DIO_PIN); //注意我的模块引脚资源紧张 用的是0和2
//(0,2) 4段共阳红色12针0.36寸数码管DIO 3.3~5.5V,8级灰度可调
int8_t tm1637Data[] = {0x00,0x00,0x00,0x00};
//四段数据初始化为四个0
//setup() {...} 中进行初始化
tm1637.init();//初始化
tm1637.point(1);//小数点开关,true=1为打开,false=0为关闭(需要地方调用即可)
tm1637.set(BRIGHT_TYPICAL);//亮度 BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7;
tm1637.display(tm1637Data);//显示初始化的值0 0 : 0 0
//loop(){...}进行更新数码管的值
//此时我将更新全局变量tm1637Data的数组的值即可
//调用频率1秒,温湿度读取频率10秒
//更新时间的方法(提前获取到网络时间NTP方式获取的)hours,minutes
tm1637.point(POINT_ON); //冒号POINT_ON=1
tm1637.display(0,hours/10); //1段
tm1637.display(1,hours%10); //2段
tm1637.display(2,minutes/10); //3段
tm1637.display(3,minutes%10); //4段
//更新温度的方法(在别的温度获取代码中解析到数据更新到全局变量tm1637Data中)即可
//主要代码(获取平均温度后,此方法见上篇文档)
tm1637.point(POINT_OFF);//关闭冒号显示(0)因为不能显示一个点 防止和时间误导
tm1637Data[0]=String(dx_temp_avg).substring(0,1).toInt();
tm1637Data[1]=String(dx_temp_avg).substring(1,2).toInt();
tm1637Data[2]=String(dx_temp_avg).substring(3,4).toInt();
tm1637Data[3]=String(dx_temp_avg).substring(4,5).toInt();
tm1637.display(tm1637Data); //dx_temp_avg就是平均温度的值变量
//思路:可以设置一个公共变量,用于判断是显示时间还是显示温度值即可
//更多方法见欢迎交流远程体验: 久爱物联网 jiuaiiot
三、调试结果
本次使用的ds18b20和上篇的不太一样哦。
本文暂时没有评论,来添加一个吧(●'◡'●)