小猪学arduino—使用DS3231芯片测量温度

上一篇,我们尝试了 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();  #打印温度值

打印到LCD效果:wechatimg1

yan 2016.12.25 15:07

 

参考:

http://www.geek-workshop.com/thread-9841-1-1.html

《小猪学arduino—使用DS3231芯片测量温度》有1个想法

发表评论

电子邮件地址不会被公开。