Arduino入门教程(8)—温度报警器

2019-04-02 09:47

Arduino 入门教程(8)—温度报警器

在上一节中,我们认识了一个发声元件——蜂鸣器,也做了一个简单的小报警 器。是不是还不过瘾呢?这次我们要做一个更实际的应用——温度报警器。当 温度到达我们设定的限定值时,报警器就会响。我们可以用于厨房温度检测报警 等等,各种需要检测温度的场合。这个项目中,除了要用到蜂鸣器外,还需要一 个 LM35 温度传感器。 我们这里将头一回接触传感器,传感器是什么?简单的从字面上的理解就是,一 种能感知周围环境,并把感知到的信号转换为电信号的感应元件。感应元件再把 电信号传递给控制器。就好比人的各个感官,感知周围环境后,再信息传递给大 脑是一样的道理。

所需元件

1× 蜂鸣器

1× LM35 温度传感器

STEP 1:硬件连接

在接 LM35 温度传感器时,注意三个引脚的位置,从左至右依次接 5V、Analog

0、GND,如我们下图所示。

STEP 2:输入代码

完成硬件连接后,打开 Arduino IDE,输入下面这段代码。

1.

float sinVal; int toneVal;

unsigned long tepTimer ; 2.

3. 4.

5. void setup(){

6. pinMode(8, OUTPUT); 7. Serial.begin(9600);

// 蜂鸣器引脚设置 //设置波特率为 9600 bps 8.

9.

}

10. void loop(){

11. int val; //用于存储 LM35 读到的值 12. double data; //用于存储已转换的温度值 13. val=analogRead(0); //LM35 连到模拟口,并从模拟口读值 14. data = (double) val * (5/10.24); // 得到电压值,通过公式换成温度

15. 16.

if(data>27){ // 如果温度大于 27,蜂鸣器响 17. for(int x=0; x<180; x++){ 18.

19. 20.

//将 sin 函数角度转化为弧度 sinVal = (sin(x*(3.1412/180))); //用 sin 函数值产生声音的频率 21. toneVal = 2000+(int(sinVal*1000)); 22. //给引脚 8 一个

23. 24. 25. 26. 27. 28. } tone(8, toneVal); delay(2); // 如果温度小于 27 ,关闭蜂鸣器 noTone(8); //关闭蜂鸣器 } else { } 29. 30.

if(millis() - tepTimer > 500){ // 每 500ms,串口输出一次温度值 31. tepTimer = millis(); 32. Serial.print(\// 串口输出“温度” 33. Serial.print(data); // 串口输出温度值 34. Serial.println(\// 串口输出温度单位

35. }

36. }

成功下载完程序后,打开 Arduino IDE 的串口监视器。

设置串口监视器的波特率为 9600。

就可以直接从串口中读取温度值,并尝试升高周围环境温度,或者用手直接接触 LM35 使其升温,串口可以很直观的看到温度有明显的变化。

蜂鸣器工作的条件是,一旦检测到环境温度大于 27 度,蜂鸣器鸣响,环境温度 小于 27 度,则关闭蜂鸣器。 STEP 3: 代码回顾 这段代码与报警器一节的大部分内容是相同的,就直接讲讲不同的吧! setup()函数的第一句,我们想必已经很熟了,设置蜂鸣器为输出模式,有人可 能会问为什么 LM35 不用设置呢?LM35 是个模拟量,模拟量不需要设置引脚模 式。pinMode 只用于数字引脚。 Arduino 的通信伙伴——串口

串口是 Arduino 和外界进行通信的一个简单的方法。每个 Arduino 都至少有一 个串口,UNO 分别与数字引脚 0(RX)和数字引脚 1(TX)相连。所以如果要用到 串口通信的,数字 0 和 1 不能用于输入输出功能。 串口可用的函数也有好多,可用查看语法手册。我们这里就先介绍几个常用的:

1.

Serial.begin(9600);

这个函数用于初始化串口波特率,也就是数据传输的速率,是使用串口必不可少 的函数。直接输入相应设定的数值就可以了,如果不是一些特定的无线模块对波 特率有特殊要求的话,波特率设置只需和串口监视器保持一致即可。我们这里就 只是用于串口监视器。

1.

val=analogRead(0);

这里用到了一个新函数——analogRead(pin)。 这个函数用于从模拟引脚读值,pin 是指连接的模拟引脚。Arduino 的模拟引脚 连接到一个了 10 位 A/D 转换,输入 0~5V 的电压对应读到 0~1023 的数值, 每个读到的数值对应的都是一个电压值。 我们这里读到的是温度的电压值,是以 0~1023 的方式输出。而我们 LM35 温 度传感器每 10mV 对应 1 摄氏度。

1.

data = (double) val * (5/10.24);

从传感器中读到的电压值,它的范围在 0~1023,将该值分成 1024 份,再把结 果乘以 5,映射到 0~5V,因为每度 10mV,需要再乘以 100 得到一个 double 型温度值,最后赋给 data 变量。

后面进入一个 if 语句,对温度值进行判断。这里的 if 语句与之前讲的有所不同。

if…else 用于对两种情况进行判断的时候。

if…else 语句格式:


Arduino入门教程(8)—温度报警器.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018-2019学年牛津译林版初三英语上册期末测试题含答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: