DS18B20实物图
DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点
DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯
工作电压范围为3.0 V至5.5 V ,测量温度范围为-55 ° C至+125 ℃ ”
PDF文档参考链接:http://www.alldatasheet.com/datasheet-pdf/pdf/433921/MAXIM/DS18B20.html
蜂鸣器(推荐使用有源蜂鸣器)
ESP8266开发板(NodeMCU)
代码一:读取DS18B20温度数值
//要先安装这两个头文件
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2 // DQ接ESP8266引脚D4(GPIO2)
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup(void)
{
Serial.begin(115200);
sensors.begin();
}
void loop(void)
{
sensors.requestTemperatures(); // 发送命令获取温度
Serial.print("Temp: ");
Serial.print(sensors.getTempCByIndex(0));
Serial.println(" *C");
delay(500);
}
运行截图
代码二:温度区间判断蜂鸣器自动报警
//要先安装这两个头文件
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 0 // DQ接ESP8266引脚D3(GPIO0)
#define PIN_BEEP 15 // 蜂鸣器接ESP8266引脚D8(GPIO15)
unsigned long previousMillis = 0; //定义延时函数
const long interval = 1000; //定义延时长度1000ms
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup(void)
{
Serial.begin(115200);
sensors.begin();
pinMode(PIN_BEEP, OUTPUT); // 蜂鸣器引脚初始化
}
void loop(void)
{
sensors.requestTemperatures(); // 发送命令获取温度
double data = sensors.getTempCByIndex(0) ; //用于接收存储温度值
//定义函数延时
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
Serial.print("Temp: "); // 串口输出温度
Serial.print(data); // 串口输出温度值
Serial.println("*C");
}
//温度报警程序
if (data > 25 || data < 20 ) { // 如果温度大于25或小于20,蜂鸣器响
digitalWrite(PIN_BEEP, HIGH); //打开蜂鸣器
delay(20);
}
else { // 如果温度在25-20度之间,关闭蜂鸣器
digitalWrite(PIN_BEEP, LOW); //关闭蜂鸣器
}
}