ds18b20温度传感器代码
时间: 2023-09-23 10:08:39 浏览: 125
以下是一个基本的ds18b20温度传感器代码示例,使用Arduino IDE编写:
#include <OneWire.h> //引用OneWire库
OneWire ds(2); //定义数据线为2号引脚
void setup() {
Serial.begin(9600); //打开串口
}
void loop() {
byte data[12];
byte addr[8];
if ( !ds.search(addr)) {
// 重置搜索
ds.reset_search();
delay(250);
return;
}
if ( OneWire::crc8( addr, 7) != addr[7]) {
// 校验不正确
return;
}
// 发送命令读取温度数据
ds.write(0x44,1);
// 等待转换完成
delay(1000);
// 读取温度数据
ds.reset();
ds.select(addr);
ds.write(0xBE); // 发送读取命令
for (byte i = 0; i < 9; i++) {
data[i] = ds.read();
}
int16_t raw = (data[1] << 8) | data[0];
byte cfg = (data[4] & 0x60);
// 计算温度
float celsius = (float)raw / 16.0;
if (cfg == 0x00) celsius = celsius / 2.0;
else if (cfg == 0x20) celsius = celsius / 4.0;
else if (cfg == 0x40) celsius = celsius / 8.0;
else if (cfg == 0x60) celsius = celsius / 16.0;
// 打印温度
Serial.print("Temperature: ");
Serial.print(celsius);
Serial.println(" C");
delay(1000);
}
这个代码使用OneWire库来读取ds18b20温度传感器的数据。它会发送一个命令来启动温度转换,然后等待一段时间,然后读取温度数据并计算实际温度。最后,它会通过串口输出温度值。
阅读全文