使用DS18B20非常简单,和DHT11差不多,按照下列步骤:
1、定义DS18B20对象,设定DS18B20的DQ数据线所使用的GPIO,如:DS18B20 ds(PC1);
2、调用read()方法进行温度采集,如果返回DS18B20::OK,表示采集成功,其它值表示失败
3、采集成功之后就可以使用对象的getCelsius()和getFahrenheit()分别获取到摄氏温度和华氏温度
我这次试验选用了PC3与DS18B20的DQ管脚相连,这个管脚是用于DHT11数据采集,带有一个4.7K上拉电阻,电路原理图和实际接线图如下:
在软件包的“Projects\DS18B20”文件夹包含了本文的完整工程,可以直接编译、烧写和调试。来看看main.cpp的代码:
#include "WProgram.h"
#include "DS18B20.h"
//接到DHT11_DATA_PIN,通过4.7K电阻上拉
DS18B20 ds(DHT11_DATA_PIN);
void setup()
{
//启用默认串口,波特率9600
Serial.start();
}
void loop()
{
//数据采集成功
if(ds.read() == DS18B20::OK)
{
Serial.print("Celsius:");
Serial.println(ds.getCelsius());
Serial.print("Fahrenheit:");
Serial.println(ds.getFahrenheit());
delay(5000);
}
}
int main(void)
{
//初始化开发板
boardInit();
setup();
while(1) loop();
}
程序非常简单,就不再啰嗦,将USART3和USB-TTL模块连接,在串口调试工具中可以看到运行效果: