四位数码管模块与SHTC3显示温湿度-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5348|回复: 2

四位数码管模块与SHTC3显示温湿度

[复制链接]
发表于 2020-3-6 00:58 | 显示全部楼层 |阅读模式
本帖最后由 topdog 于 2020-3-6 07:08 编辑

四位数码管模块是四个数码管和TM1637组成的模块用于信息显示,我国是数码管生产大国,产能巨大,有着各种颜色和尺寸的型号,价廉物美。在能见度低的条件下,数码管发光的特性也是lcd和oled不可替代的。只要把数码管玩溜了,它呈现出来效果也是非常动感,时尚,酷炫的。SHTC3是超低功耗数字湿度传感器,电源电压范围更宽(1.62V至3.6V),精度更高(±2% RH,±0.2°C),包含电容式湿度传感器、带隙温度传感器、模拟和数字信号处理、模数转换器、校准数据内存以及支持I2C快速模式的数字通信接口。该传感器覆盖的湿度测量范围为0至100%相对湿度,温度测量范围为-40°C至125°C。SHTC3的电源电压范围宽,每次测量的能量预算低于1μJ。core+是美科科技推出的基于644p的核心,需要配合usbttl一起使用。
接线图如下:
shtc3 tm1637 (2).PNG
程序如下:
/*   库文件下载地址和管脚接线
*  https://github.com/Seeed-Studio/Grove_4Digital_Display  
* TM1637   CORE+
* CLK        2      
* DIO        3
* https://github.com/sparkfun/SparkFun_SHTC3_Arduino_Library
* SHTC3      CORE+
* SCL        A4
* SDA        A5
*/

#include "TM1637.h"
#include "SparkFun_SHTC3.h"

#define CLK 2                        // TM1637 的时钟引脚
#define DIO 3                        // TM1637 的数据引脚

TM1637 tm1637(CLK, DIO);
SHTC3 mySHTC3;

void setup()
{
  Serial.begin(115200);

  tm1637.set(BRIGHT_TYPICAL);     //柔和的光线保护视力
  tm1637.init();

  mySHTC3.begin();
  Wire.setClock(400000);

  delay(1500);                                  //歇歇脚,磨叽磨叽
}

void loop()
{
  SHTC3_Status_TypeDef result = mySHTC3.update();
  mySHTC3.lastStatus == SHTC3_Status_Nominal;

  //显示字符串hello,Grove_4Digital_Display库不是把所有ACSII码列出,注意大小写  //关闭中间冒号显示
  //这里显示的是小写o,如果要大写就用数字0
  tm1637.point(POINT_OFF);         
  tm1637.displayStr("HELLo", 1000);   
  delay(3000);

  TemperatureUpdate();
  delay(3000);                                //阻塞的写法,不喜欢的可以改掉。

  HumidityUpdate();
  delay(3000);
}

//float 数据保留两位小数直接输出的写法
void TemperatureUpdate(void)
{
  if (mySHTC3.passRHcrc)
  {
    float Temperature = mySHTC3.toDegC();
    tm1637.clearDisplay();
    tm1637.point(POINT_ON);
    tm1637.displayNum(Temperature, 2);
  }
}
//int 数据转化后输出
/*void TemperatureUpdate(void){
  if(mySHTC3.passRHcrc)
  {      
    int Temperature = mySHTC3.toDegC();      
    int digitoneT  = Temperature / 10;
    int digittwoT  = Temperature  % 10;
    tm1637.clearDisplay();
    tm1637.point(POINT_OFF);
    tm1637.display(1,digitoneT);
    tm1637.display(2,digittwoT);
    tm1637.display(3,12);                 //此处加C表示摄氏度   
  }
}
*/

void HumidityUpdate(void)
{
  if (mySHTC3.passRHcrc)
  {
    int Humidity = mySHTC3.toPercent();
    int digitoneH = Humidity / 10;
    int digittwoH = Humidity % 10;
    tm1637.clearDisplay();
    tm1637.display(1, 'H');                  //此处加H表示湿度
    tm1637.display(2, digitoneH);
    tm1637.display(3, digittwoH);
  }
}
常用的的ACSII需要再添加到库文件里面去,这个问题就留给大家思考,所以文章待续........








发表于 2020-3-16 15:58 | 显示全部楼层
SHTC3模块还没用过,向师兄学习
 楼主| 发表于 2020-3-17 22:22 | 显示全部楼层
沧海笑1122 发表于 2020-3-16 15:58
SHTC3模块还没用过,向师兄学习

谢谢沧海老师的指导和支持。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-28 00:30 , Processed in 0.172509 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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