2018-01-1818:20:48

感觉自己最近有点凌乱,一个很简单的问题都能困扰自己很久。以前能很好使用和调试的DS18B20温度传感器,今天愣是搞了很久,妈卖批。

仅仅一个上拉电阻就困扰了我很久,同时也颠覆了我一直以来“电阻”无用的理论。有一些敏感元件,电阻的作用不容小觑。

DS18B20温度传感器知识点总结-LMLPHP

调试代码简单精简版本如下,极客工坊大神修改版

 #include "DS18B20_S.h"
//传感器设定为10位模式,每次转换时间<187.5ms,如果需要12位模式,请修改库文件of ds.set(0x7F);
DS18B20_S ds();//pin9
void setup() {
Serial.begin();
}
void loop() {
ds.start();//开始测量(所有传感器)
float a=ds.get();
delay();//2根线连接模式
Serial.print("c0=");
if(a>){ //CRC 校验错误
Serial.println("CRC error");
}
else{
Serial.println(a);
} //下面的不重要
// void set(byte n);//set(0x1F) 9位模式 delay(94) ;
//0x3F 10位模式 delay(188);
//0x5F 11位模式 delay(375);
//0x7F 12 位模式 delay(750);
}

中贝斯特代码《通用版代码》用到了#include <OneWire.h>#include <DallasTemperature.h>库文件

 //上拉电阻!!!!!!!!!!!!!!!!!
#include <OneWire.h>
#include <DallasTemperature.h> // Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2 // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS); // Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire); void setup(void)
{
// start serial port
Serial.begin();
Serial.println("Dallas Temperature IC Control Library Demo"); // Start up the library
sensors.begin();
} void loop(void)
{
// call sensors.requestTemperatures() to issue a global temperature
// request to all devices on the bus
Serial.print("Requesting temperatures...");
sensors.requestTemperatures(); // Send the command to get temperatures
Serial.println("DONE"); Serial.print("Temperature for the device 1 (index 0) is: ");
Serial.println(sensors.getTempCByIndex());
}

库文件资料下载

05-07 15:00