【中学生创客.Arduino】第4课 聪明的按钮

     一般来说,家里面的灯都是通过开关来控制的,即按下开,再按下关,那么能否用Arduino实现呢这节课我们一起来学习用按钮开关实现按下开,再按下关的LED效果。

【任务导航】

    1.掌握布尔类型和变量;

    2.制作“按钮按下开,再按下关”的LED。

【材料阅读】

1.变量和常量

在编程过程中变量和常量是基本的数据对象。编写程序总是要与各种数据打交道,如马达的速度、等待的时间等,这就需要涉及到变量和常量了。

常量指的是程序在运行过程中,其值不能改变的数据,如图1.4.1所示。其中常量分为数字常量、字符常量、字符串常量等。

 

图1.4.1 ArduBlock环境中的常量

变量是指在程序中用来代表数据的字符,这些字符的值是可以变化的,其中变量有多种类型,如数字变量、模拟变量、字符串变量、字符变量等等。ArduBlock环境中的部分变量如下图1.4.2所示。

 

图1.4.2 变量

2.布尔类型

布尔类型(bool)用于表示真/假。该类型的变量值只能是0或者1。无论赋予任何非零值给该类型的变量,它的值都只会是1。

表4-1 布尔类型

灯亮

1

TRUE

高电平

高电位

按下按钮

HIGH

灯灭

0

FALSE

低电平

低电位

放开按钮

LOW

    3.非运算符

运算符是告诉编译程序执行特定算术或逻辑操作的符号。运算符主要分为三大类:算术运算符、 关系运算符与逻辑运算符、按位运算符。我们这节课主要来学习逻辑运算符里面的非运算。

非运算是单目符号运算的一种,所谓单目运算符就是只有需要一个操作数的运算符。非运算的符号是“!”,其意思就是取与表达式相反的值,若表达式值为真,则逻辑非运算结果为假。例如,如果数字针脚的值为0,非0就是1即真;相反如果数字针脚的值为1,非1就是0即假。 

    3.按钮抖动

    通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖。而最简单的消抖方法就是加入延时。

【动手操作】

主题:制作“按钮按下开,再按下关”的LED。

    1.硬件搭建

电路的连接跟我们上节课的一样,这里还是要特别强调一下我们的按钮模块接数字口,并且黑线接GND,红线接5V,第三根线接信号针脚。在接好电路之后,要记住自己接的是哪个数字口。

器材:Arduino Romeo控制器、按钮、LED发光模块以及数据线。

2.参考程序一

 

图1.4.3 按钮按下开,再按下关的LED

参考程序二

 

提示:参考程序二加了延时。

【探究思考】

1.请同学们下载程序,仔细观察LED的稳定性如何?解释为什么出现这种现象?如何来解决?

2.思考一个按钮控制LED,还有哪些情况?

【视野拓展】

1.按钮抖动现象

    通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖,如图1.4.4所示。

    抖动时间的长短由按键的机械特性决定,一般为5ms10ms。这是一个很重要的时间参数,在很多场合都要用到。

1.4.4 按键抖动

 

    按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。键抖动会引起一次按键被误读多次。为确保CPU对键的一次闭合仅作一次处理,必须去除键抖动。在键闭合稳定时读取键的状态,并且必须判别到键释放稳定后再作处理。

2.按钮消抖

    消抖是为了避免在按键按下或是抬起时电平剧烈抖动带来的影响。按键的消抖,可用硬件或软件两种方法。一般来说,我们会使用软件方法去抖,即检测出键闭合后执行一个延时程序,5ms10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms10ms的延时,待后沿抖动消失后才能转入该键的处理程序。

    软件消抖的方法是不断检测按键值,直到按键值稳定。实现方法:假设未按键时输入1,按键后输入为0,抖动时不定。可以做以下检测:检测到按键输入为0之后,延时5ms10ms,再次检测,如果按键还为0,那么就认为有按键输入。延时的5ms10ms恰好避开了抖动期。

【挑战自我】

1.思考能否用模拟变量实现按钮按下LED亮,再按下LED灭?

2.两个按钮控制LED,有哪些效果?思考并尝试实现。



关键词:Arduino

网友留言(0 条)

发表评论

验证码