arduino温度传感器DS18B20
时间: 2025-01-04 22:20:28 浏览: 9
### Arduino与DS18B20温度传感器教程
#### 材料清单
为了实现Arduino与DS18B20温度传感器的交互,需准备如下材料[^1]:
- DS18B20温度传感器模块一个
- 4k7电阻一个
- 面包板一个
- 杜邦线若干
- 数据线一条
#### 连接方式
按照下述方法连接各组件:
- 将DS18B20的数据引脚(DQ)接到NodeMCU的GPIO引脚上;
- 使用4k7电阻作为拉-up电阻,一端连至VCC另一端连到数据线上;
- VCC和GND分别接入电源正负极。
#### 工作流程概述
工作流程主要包括初始化、发送温度转换命令、等待转换完成以及读取温度数据几个阶段。在初始化期间,微控制器发出复位脉冲及应答脉冲来验证同传感器间的通讯状态;随后传送温度变换指令使设备执行一次测温操作;当测量结束之后便可以从存储单元获取数值,并转化为摄氏度形式用于展示或是传递给其他装置处理[^2]。
#### 示例代码
下面给出一段基于OneWire库和DallasTemperature库编写的简单程序用来读取来自DS18B20传感器的温度值:
```cpp
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into pin 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 sensor
DallasTemperature sensors(&oneWire);
void setup(void)
{
// Start serial communication for debugging purposes
Serial.begin(9600);
Serial.println("Connecting...");
// Start up the library
sensors.begin();
}
void loop(void)
{
// Request temperatures from all attached sensors
sensors.requestTemperatures();
// Fetch and print out the temperature value in Celsius
float temperatureC = sensors.getTempCByIndex(0);
Serial.print("Current temperature is: ");
Serial.print(temperatureC);
Serial.println(" C");
delay(1000); // Wait a second before repeating
}
```
此段代码实现了每秒钟打印当前环境下的温度信息的功能,在实际项目中可根据需求调整采样频率和其他参数设置。
阅读全文