1.材料
1、NodeMCU(ESP8266)(ESP12F)
2、470Ω电阻两个
3、LED灯两个
4、DS18B20测温器一个
2.编译环境
使用 Arduino IDE 编译时需包含<OneWire.h>、<DallasTemperature.h>两个库
<DallasTemperature.h>库链接:https://pan.baidu.com/s/1sLWUYKeXgNEaRRIexNZKww
提取码:1111
DS18B20代码链接:https://pan.baidu.com/s/18JXqQf9VmS9YjiRVg_8Ncg
提取码:1111
3.想要达到的目的
当温度小于27℃时,继电器0启动;当继电器大于29℃时,继电器2启动。
代码
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2 // 定义DS18B20数据口连接arduino的 2 脚
const int RWLAY0_Pin = D2; //单片机RWLAY0引脚值,GPIO0引脚
const int RELAY1_Pin = D0; //单片机继电器引脚值,GPIO0引脚
#define Alarm_low 27 // 定义报警数据低于27℃ 自定义修改数据
#define Alarm_high 29 // 定义报警数据高于29℃ 自定义修改数据
OneWire oneWire(ONE_WIRE_BUS); // 初始连接在单总线上的单总线设备
DallasTemperature sensors(&oneWire);
/*报警函数*/
void Alarm(){
if(sensors.getTempCByIndex(0) < Alarm_low){ //如果 当温度小于27℃时
digitalWrite(RELAY1_Pin,HIGH); //继电器1为高电平
digitalWrite(RWLAY0_Pin,LOW); //继电器0为低电平,继电器动作
}else if(sensors.getTempCByIndex(0) > Alarm_high){ //当温度大于29℃时
digitalWrite(RELAY1_Pin,LOW); //继电器1为低电平,继电器动作
digitalWrite(RWLAY0_Pin,HIGH); //继电器0为高电平
}else{ //否则
digitalWrite(RWLAY0_Pin,HIGH); //继电器0为高电平
digitalWrite(RELAY1_Pin,HIGH); //继电器1为高电平
}
}
void setup()
{
Serial.begin(115200); // 设置串口通信波特率
sensors.begin(); // 初始库
pinMode(RWLAY0_Pin,OUTPUT);//设置引脚模式为输出
digitalWrite(RWLAY0_Pin,HIGH);//默认输出高电平
pinMode(RELAY1_Pin,OUTPUT);//设置引脚模式为输出
digitalWrite(RELAY1_Pin,HIGH);//默认输出高电平
}
void loop(void)
{
Alarm(); //报警函数
sensors.requestTemperatures(); // 发送命令获取温度
Serial.print("温度值:"); //串口打印 温度值:
Serial.print(sensors.getTempCByIndex(0)); //串口打印温度数值
Serial.println("℃"); //串口打印 ℃
delay(2000); //延时2秒
}
参考链接:
【学习笔记】Arduino 与 DS18B20 数字温度传感器 联合调试
https://blog.csdn.net/qq_25915701/article/details/81591628