1源代码(DS18B20)
#include <OneWire.h> // 引入OneWire库,用于与单总线设备通信
#include <DallasTemperature.h> // 引入DallasTemperature库,用于读取DS18B20温度传感器数据
// 定义连接到DS18B20数据引脚的GPIO编号
#define ONE_WIRE_BUS 2
// 创建一个OneWire实例,用于与单总线设备通信
OneWire oneWire(ONE_WIRE_BUS);
// 创建一个DallasTemperature传感器实例,并将oneWire实例传递给它
DallasTemperature sensors(&oneWire);
void setup(void) {
// 初始化串口通信,并设置波特率为115200,用于调试信息输出
Serial.begin(115200);
// 启动传感器,准备进行温度读取
sensors.begin();
}
void loop(void) {
// 向DS18B20传感器发送温度读取命令
sensors.requestTemperatures();
// 通过索引0读取第一个连接的DS18B20传感器的温度值,单位为摄氏度
float temperature = sensors.getTempCByIndex(0);
// 通过串口输出温度信息,首先输出字符串"温度: "
Serial.print("温度: ");
// 输出读取到的温度值,并通过println换行
Serial.println(temperature);
// 程序暂停1000毫秒,即等待一秒后再次读取温度
delay(1000);
}
2讲解
添加两个库
3具体实现
以下是库实现的一些关键步骤:
-
初始化:库通过调用
begin()
方法初始化,设置1-Wire总线的GPIO引脚。 -
设备搜索:使用
OneWire
库的搜索功能来查找连接到总线上的所有设备。 -
发送命令:库通过1-Wire协议发送命令,如开始温度转换的命令。
-
数据读取:库通过1-Wire协议读取设备发送的数据。
-
数据处理:库处理原始数据,计算实际温度值。
-
错误处理:库检查通信错误和数据一致性,确保读取的温度值是准确的。