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

topdog 发表于 2020-3-6 00:58

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

本帖最后由 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一起使用。
接线图如下:

程序如下:
/*   库文件下载地址和管脚接线
*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需要再添加到库文件里面去,这个问题就留给大家思考,所以文章待续........








沧海笑1122 发表于 2020-3-16 15:58

SHTC3模块还没用过,向师兄学习:handshake

topdog 发表于 2020-3-17 22:22

沧海笑1122 发表于 2020-3-16 15:58
SHTC3模块还没用过,向师兄学习

谢谢沧海老师的指导和支持。
页: [1]
查看完整版本: 四位数码管模块与SHTC3显示温湿度