前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

双温度传感器ds18b20+四段数码管显示实时温度更新

qiguaw 2024-08-29 22:11:41 资源文章 34 ℃ 0 评论

一、前言

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和上篇的不太一样哦。




本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表