一、实验目的:

1、将温度值打印显示在串口监视器

1、将温度值打印显示在串口,不同温度段显示不同的灯光,并在温度过高或过低时利用蜂鸣器报警。

二、实验准备:

1、查阅相关资料,了解本次实验所用到的引脚、接口的相关知识。

DS18B20引脚定义:

(1)DQ为数字信号输入/输出端;

(2)GND为电源地;

(3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)。

2、准备Arduion板(本次实验所用到的型号为mega2560)、温度传感器DS18B20、杜邦公母线、三色发光二极管、无源蜂鸣器

三、实验操作:

(一)1.0版本

1、将温度传感器的DQ引脚用杜邦线与Arduion板上的数字IO接口2相连,VDD和GND引脚分别与Arduion上的5V、GND接口相连。

2、将Arduion连上主机,打开IDE,在工具选项卡中设置对应的开发板(本次选择mega2560)和一个端口

3、验证代码并上传代码至Arduion

(二)2.0版本

1、将温度传感器的DQ引脚用杜邦线与Arduion板上的数字IO接口2相连,VDD和GND引脚分别与Arduion上的5V、GND接口相连。

2、将三色发光二极管的R、G、B引脚用杜邦线分别与Arduion板上的数字IO接口11、12、13相连,GND引脚连接Arduion上的GND接口。

3、将无源蜂鸣器的I/O引脚用杜邦线与Arduion板上的数字IO接口7相连,VDD和GND引脚分别与Arduion上的5V、GND接口相连。

4、将Arduion连上主机,打开IDE,在工具选项卡中设置对应的开发板(本次选择mega2560)和一个端口

5、验证代码并上传代码至Arduion

四、以下为我本次实验的运行代码:

1.0版本:

#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2 // 定义DS18B20数据口连接arduino的 2 脚
OneWire oneWire(ONE_WIRE_BUS); // 初始连接在单总线上的单总线设备
DallasTemperature sensors(&oneWire); void setup()
{
Serial.begin(9600); // 设置串口通信波特率
sensors.begin(); // 初始库
} void loop(void)
{
sensors.requestTemperatures(); // 发送命令获取温度
Serial.print("温度值:"); //串口监视器打印温度值
Serial.print(sensors.getTempCByIndex(0));
Serial.println("℃");
delay(10);
}

温度传感器Plus代码:

2.0版本

#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2 // 定义DS18B20数据口连接arduino的 2 脚
OneWire oneWire(ONE_WIRE_BUS); // 初始连接在单总线上的单总线设备
DallasTemperature sensors(&oneWire);
int buzzer=7;
int redled = 11;
int greenled =12;
int blueled = 13; void setup()
{
Serial.begin(9600); // 设置串口通信波特率
sensors.begin(); // 初始库
pinMode(buzzer, OUTPUT); //设置数字IO脚模式,OUTPUT为输出
pinMode(redled, OUTPUT);
pinMode(greenled, OUTPUT);
pinMode(blueled, OUTPUT);
} void loop(void)
{
sensors.requestTemperatures(); //发送命令获取温度
Serial.print("温度值:"); //串口打印"温度值:"
Serial.print(sensors.getTempCByIndex(0)); //串口打印温度
Serial.println("℃"); //串口打印摄氏度
delay(10); //等待10毫秒以观察数据
float temp = sensors.getTempCByIndex(0); //指定温度为一个浮点数数据类型
if(temp>=15.0) //如果温度大于15摄氏度,进入for循环
{
if(temp>=34.0)
{
int i=2000;
digitalWrite(redled, HIGH); //红灯亮起,温度过高报警
tone(buzzer,i); //在四号端口输出频率
delay(1000); //该频率维持1000毫秒
digitalWrite(redled, LOW); //红灯熄灭,报警结束
noTone(7); //报警停止
}else
{
digitalWrite(greenled, HIGH); //绿灯亮起
delay(1000); //等待1000毫秒
digitalWrite(greenled, LOW); //绿灯熄灭
delay(1000); //等待1000毫秒
}
}else{
int i=1000;
digitalWrite(blueled, HIGH); //蓝灯亮起,温度过低报警
tone(buzzer,i); //在四号端口输出频率
delay(1000); //该频率维持1000毫秒
digitalWrite(blueled, LOW); //蓝灯熄灭,报警结束
noTone(7); //报警停止
}
}

没大胆尝试怎知不可,未坚持到底如何放弃!

最新文章

  1. intellij 调试spark scala 程序 报错
  2. 论使用LeanCloud中遇到的坑
  3. 用x86的模拟器内核记得安装intel的haxm
  4. C# lambda表达式及初始化器
  5. Heap(堆)和stack(栈)有的区别是什么。
  6. 第1章 shell编程概述
  7. jquery ajax cache的问题
  8. python_Opencv_图像的基础操作
  9. drawRect &amp; layoutSubviews 调用时间
  10. 更多文章请关注公众号:FullStackPlan 或前往个人主页:www.linbingdong.com
  11. S3C2440串口及其中断系统详解
  12. 【★】KMP算法完整教程
  13. java中的“\t”
  14. 敏捷开发冲刺--day3
  15. (89)Wangdao.com第二十二天_JavaScript DocumentFragment 节点
  16. Excel坐标自动在AutoCad绘图_3
  17. struts拦截器的知识
  18. 4.Linux开机设置项
  19. Android为TV端助力 SharedPreferences 轻量级存储!
  20. Css - 利于搜索引擎收录的三个标签

热门文章

  1. GoSDK的安装及环境变量配置 入门详解 - 精简归纳
  2. undefined reference to &#39;mq_open&#39;
  3. python数学math和random模块
  4. fflush(stdin)和fflush(stdout)
  5. Lagrange插值C++程序
  6. 【SpringBoot】06.SpringBoot访问静态资源
  7. MySql中指定符号分割并分行展示
  8. Linux下端口被占用,关掉端口占用的方法
  9. 手把手教你使用rpm部署ceph集群
  10. JavaScript封装一个函数效果类似内置方法concat()