「雕爷学编程」Arduino动手做(39)——DS18B20温度传感器2
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验三十九:DS18B20单总线数字温度传感器模块

18B20元件官方链接如下:
https://www.maximintegrated.com/cn/products/sensors/DS18B20.html
相关技术参考资料:
https://datasheets.maximintegrated.com/en/ds/DS18B20.pdf
https://www.jin-hua.com.tw/upload/product/2110000001544_DATA.pdf

18B20数字温度传感器模块实验所需硬件清单
Arduino Uno开发板 X1
0.96寸OLED显示屏X1
杜邦线 若干(备了9条)
高电平触发有源蜂鸣器模块X1
IIC/I2C 1602 LCD液晶屏模块X1
18B20数字温度传感器模块X2
LED发光二极管(绿、蓝色)X2
高电平触发单路5V继电器模块X1
Proto Shield 原型扩展板(带mini面包板)X1

传感器模块实验所需软件平台
代码编程 Arduino IDE (版本1.8.19)
仿真编程 Linkboy (版本V4.6.3)
图形编程 Mind+ (版本 V1.7.0 RC2.0)
以及编玩边学(线上平台https://ide.codepku.com/?type=Arduino)
实验接线示意图


搜索安装“DallasTemperature”和“OneWire”库
1、打开Arduino——工具——管理库——搜索DallasTemperature——安装

2、打开Arduino——工具——管理库——搜索OneWire——安装



程序一:单线数字温度18B20 + Arduino
Arduino参考开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序一:单线数字温度18B20 + Arduino
*/
#include <OneWire.h> // 调用OneWire库
#include <DallasTemperature.h> // 调用DallasTemperature库
#define ONE_WIRE_BUS 2 // 定义18B20数据口连接arduino的 2 脚
OneWire oneWire(ONE_WIRE_BUS); // 初始连接在单总线上的单总线设备
DallasTemperature sensors(&oneWire);
void setup(void) {
Serial.begin(9600); // 设置串口通信波特率
Serial.println("18B20温度 IC 控制库演示"); // 温度IC控制库演示
sensors.begin(); // 初始化总线
}
void loop(void) {
Serial.print(" 读取温度..."); // 发起温度转换
sensors.requestTemperatures(); // 向总线上所有设备发送温度转换请求
Serial.println("完成"); // 温度转换完成
Serial.print("温度为: "); // 串口打印实时温度值
// 同一总线上可以有多个 DS18B20。
// 0指的是线上的第一个IC
Serial.print(sensors.getTempCByIndex(0));
delay(500); // 延时500毫秒
}
实验串口返回情况(手摸传感器升温3度)

Arduino实验场景图

程序二:串口显示温度
实验开源仿真编程(Linkboy V4.63)

实验串口返回情况

Arduino实验场景图

程序三:带工作指示灯的温度检测器
(1)实验开源图形编程(Mind+、编玩边学)

(2)实验串口返回情况

程序四:TM1637数码管显示温度
(1)实验开源仿真编程(Linkboy V4.63)

Arduino实验场景图

程序五:温度控制红绿蓝三色灯
(1)Arduino参考开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序五:温度控制红绿蓝三色灯
*/
#include <OneWire.h> // 调用OneWire库
#include <DallasTemperature.h> // 调用DallasTemperature库
int redLedPin = 2;//红色LED
int greenLedPin = 3;//绿色LED
int blueLedPin = 4;//蓝色LED
int temp_sensor = 5;//温度传感器
float temperature = 0;
//低于下限的温度值都会触发蓝色LED灯亮起。
//高于上限的变量都会触发红色LED灯亮起。
//介于两者之间的变量都将打开绿色LED灯。
int lowerLimit = 25;//温度下限阙值
int higherLimit = 27;//温度上限阙值
//创建一个OneWire对象
OneWire oneWirePin(temp_sensor);
DallasTemperature sensors(&oneWirePin);
void setup(void) {
//激活Arduino串行接口
Serial.begin(9600);
//设置LED作为输出
pinMode(redLedPin, OUTPUT);
pinMode(greenLedPin, OUTPUT);
pinMode(blueLedPin, OUTPUT);
sensors.begin();//温度传感器初始化
}
void loop() {
Serial.print("Requesting Temperatures from sensors: ");
sensors.requestTemperatures();
Serial.println("DONE");
temperature = sensors.getTempCByIndex(0);
digitalWrite(redLedPin, LOW);
digitalWrite(greenLedPin, LOW);
digitalWrite(blueLedPin, LOW);
Serial.print("Temperature is ");
Serial.print(temperature);
//设置LED作为输出
if (temperature <= lowerLimit) {
Serial.println(", blue LED is Activated");
digitalWrite(blueLedPin, HIGH);
}
else if (temperature > lowerLimit && temperature < higherLimit) {
Serial.println(", Green LED is Activated");
digitalWrite(greenLedPin, HIGH);
}
else if (temperature >= higherLimit) {
Serial.println(", Red LED is Activated");
digitalWrite(redLedPin, HIGH);
}
delay(2000);
}
实验串口返回情况

(2)实验场景图
温度下限为25度,上限为27度
低于下限的温度值都会触发蓝色LED灯亮起

高于上限的变量都会触发红色LED灯亮起

介于两者之间的变量都将打开绿色LED灯


雕爷学编程,Arduino动手做,开源硬件,创客传感器,DS18B20温度传感器
浙公网安备 33010602011771号