ds18b20温度传感器代码
时间: 2023-10-01 17:10:56 浏览: 55
可以直接在C语言中使用OneWire库来操作DS18B20温度传感器。以下是一个简单的代码示例:
#include <OneWire.h>
// DS18B20温度传感器数据线连接到数字引脚2
#define DS18B20_PIN 2
OneWire oneWire(DS18B20_PIN); // 创建一个OneWire实例
void setup() {
Serial.begin(9600);
}
void loop() {
byte addr[8];
float temp;
if (oneWire.search(addr)) { // 如果找到了DS18B20传感器
oneWire.reset(); // 重置总线
oneWire.select(addr); // 选择传感器
oneWire.write(0x44, 1); // 启动温度转换,并等待转换完成
delay(1000); // DS18B20需要一定时间来完成转换
oneWire.reset(); // 重置总线
oneWire.select(addr); // 选择传感器
oneWire.write(0xBE); // 发送读取命令
for (int i = 0; i < 9; i++) { // 从传感器读取9个字节的数据
byte data = oneWire.read();
if (i >= 2 && i <= 3) { // 前两个字节是温度原始数据,需要转换成摄氏度
temp += (data - 0x00) * pow(2, (i - 2) * 8);
}
}
temp /= 16.0; // 温度计算公式
Serial.print("Temperature: ");
Serial.print(temp);
Serial.println(" °C");
}
else { // 没有找到DS18B20传感器
Serial.println("No more addresses.");
oneWire.reset_search(); // 重置搜索状态,以备下次使用
delay(1000);
}
}