上一篇,我们尝试了 DS3231高精度时钟模块的使用 ,今天我们试一下这个芯片集成的数字温度传感器(传感器每64秒采集一次,精度为±3℃)。
看了下uRTCLib库没有温度相关的函数,但实际芯片上是有温度测量模块的,跟时钟一样通过串口通信,为了省事就直接在uRTCLib库上进行改造,以使它支持温度的获取。通过arduino官方开发工具库添加的库默认位置在
/Users/yanjingang/Documents/Arduino/libraries/目录下。
一、uRTCLib添加温度获取功能
vim uRTCLib/src/uRTCLib.h #添加温度变量和函数声明
class uRTCLib {
private:
uint8_t _temperature = 0;
public:
uint8_t temperature();
}
vim uRTCLib/src/uRTCLib.cpp #实际温度获取
void uRTCLib::refresh() {
//给串口发送指令,获取温度信息
byte temp;
Wire.beginTransmission(URTCLIB_ADDRESS);
Wire.write(uint8_t(0x11));
Wire.endTransmission();
Wire.requestFrom(URTCLIB_ADDRESS, 2);
temp = Wire.read(); // Here's the MSB
_temperature = float(temp); // + 0.25*(Wire.read()>>6);
}
uint8_t uRTCLib::temperature() {
return _temperature;
}
二、调用rtc库获得温度并显示
rtc.refresh(); #重新获取温度信息
print rtc.temperature(); #打印温度值
yan 2016.12.25 15:07
参考:
http://www.geek-workshop.com/thread-9841-1-1.html
提前祝博主新年快乐!