Arduino初学系列3:Arduino,按键,LED

  • 格式:pdf
  • 大小:571.18 KB
  • 文档页数:6

下载文档原格式

  / 6
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3 Arduino,按键,LED

3.1 问题描述:如何采用Arduino控制器和按键同时控制LED的闪烁

在前面的2个例子中,都是简单地通过将程序烧录到Arduino控制板,然后由控制板来控制LED灯的闪烁,缺乏人情味。那能不能在Arduino控制的过程中,再加上与人的互动呢?答案是肯定的。在这个实验中,我们将增加一个新的材料按键按钮来和Arduino一起控制灯的闪烁。

3.2 所需材料

表3-1:所需材料

序号名称数量作用备注

1 Arduino软件1套提供IDE环境最新版本1.05

2 Arduino UNO开发板1块控制主板各种版本均可

3 USB线1条烧录程序随板子配送

4 杜邦线若干条连接组件

5 发光二极管(LED)1个 LED闪烁

6 电阻(10,200Ω)2个限流

7 多功能面包板1块连接

8 按键按钮1个开关

在进行实验之前,我们先介绍按键按钮的相关属性。

按键按钮

按键是一种经常使用的设备,通过按键可以输入指令和数据来控制电路的开与关,从而达到控制某些设备的运行状态。在本实验中,通过给按键输入高低电平来控制LED灯的闪烁。开关的种类繁多复杂,比如厨房用的单孔开关,卧房用的双控开关,楼道用的声控开关等等,均属于开关的范畴。在我们实验中,主要是用微型开关,但其种类也很多,如图3-1所示。

图3‐1 微型按键开关种类

在本实验中采用的微型开关大致为6*6*5mm的四脚开关。如图3-2所示。

图3-2 本实验用的按键

值得注意的是,1和2是一边的,3和4是一边的,中间有道痕分开。其原理如图3-3所示,当按键按下去时,1,2,3,4四个管脚接合在一起,2根导线连通,变成一根导线。电路导通,起到触发(关)作用。当松开按钮,1,2,3,4四个管脚断开,起到开的作用。

图3‐3 按键按钮原理图

3.3 实验原理图

当按键按钮按下,获取一个高电平,触发在Arduino控制下的LED闪烁。当然,我们也可以设置为按键按下是LED灯不亮,当松开按键时,LED灯闪烁,请看后面的代码分析。原理图如3-4所示,就是在实验1的基础上增加一个按键按钮。

其实际电路如图3-5所示。

图3-5 电路图

当我们按照图3-5接好电路后,运行Program 3。

01 //Program 3: 按键控制Arduino板上的LED灯

02

03 int led8=8;//设置LED位于Arduino的数字IO端口8

04 void setup()

05 {

06 pinMode(led8,OUTPUT);//设置数字端口8为输出模式

07 }

08 void loop()

09 {

10 int i;//为按键设置接收电压的变量i

11 i =analogRead(0);//读取模拟端口0处电压值赋给i

12 if (i >512)//设定门限值,若接收到的电压值大于512(即2.5V )

13 {digitalWrite(led8,HIGH);//设置数字端口8为高电平,即点亮led 灯 14 delay(2000);}//保持点亮状态2s

15 else

16 digitalWrite(led8,LOW);//若电压值低于512,端口8为低电平,led 灯熄灭 17

18 }

此时,当你按下按键时,LED 灯将被点亮。但是,当你松开按键(或者用手拿着杜邦线的一端),LED 灯还是亮的,如图3-6所示。

图3-6 手拿杜邦线,LED 灯亮

这主要是因为人体或者外界存在一定的干扰,使得即使没有按下按键LED 灯还是会亮。这是因为通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动。抖动时间的长短由按键的机械特性决定,一般为5ms ~10ms 。这是一个非常重要的参数,如图3-7所示。

图3-7 按键抖动现象

SmartArduino

SmartArduino

为了避免做出误判,必须消除这种现象,这就是按键消抖。消抖的方法有很多,主要从硬件和软件两个方面。但值得指出的是,即使我们将Program 3中的电压门限值设置为比512 (512是pwm值,我们将在下面的章节中详细介绍)还要大,抖动还是会出现。笔者试着将i设置为1000,还是会出现按键没有按下(或者手拿着杜邦线的一端),LED灯还是会亮。所以必须从原理上解决这一问题。

方法一、硬件消抖

首先,我们分析一下为什么会出现抖动现象。当按键没有按下(也即断开),如图3-5、3-6中,模拟端口A0断开还是有电压值(>512),说明外界或者人体是存在一定的干扰信号。这种干扰信号用电压值表示的话,是可能大于512的。所以会出现按键没有按下LED灯也会被触发点亮。所以,我们可以在图3-3所示的1和2或3和4之间并联一个所谓的下拉电阻。即可使得按键没有按下,外界的干扰电压被消耗在了下拉电阻上了,从而使得LED灯不会被点亮,在按键没有按下的情况下。增加下拉电阻后的电路如图3-8所示。从图中可以清楚地看出,当按键断开时,外界的干扰电压被屏蔽掉了。所以,按键断开LED灯不会被

点亮。当按图3-9连接电路图后,运行Program 3,按下按键,LED灯即可被点亮。

SmartArduino

图3-9 增加下拉电阻的电路图

补充:下拉电阻

如图3-10所示,上部的一个Bias Resistor电阻因为是接地,因而叫做下拉电阻,意思是将电路节点A的电平向低方向(地)拉。下拉电阻的主要作用是与上接电阻一起在电路驱动器关闭时给线路(节点)以一个固定的电平。

图 3-10 下拉电阻

第二种方法:软件消抖

软件消抖的原理:因为按键按下后,一般有5-10ms的抖动,所以可以通过软件设计延时5-10ms,让抖动在这段时间内消失。然后再检测是否还是为高电平,若是,则判断为高电平(在本例中按下为高电平)。在按键断开也是一样的原理。断开后延时5-10ms,若为低电平表示按键断开,若还为高电平,则表示没有断开。软件消抖的方法比较简单,就是通过延时5-10ms再进行判断,做出选择。这种方法比较适合于多按键的情形,因为布置下拉电阻还是比较繁琐。但是,有时候这种方法不一定准确,比如笔者在做这个实验时,就发现不接下拉电阻的话,不管延时多长时间,LED灯都一直是点亮状态。

一般来说,是将软件和硬件方法两种结合起来使用会有更好的效果。