【小白学习记录】Arduino 与 DS18B20 数字温度传感器

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

  • 1
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值