【中学生创客.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所示。
抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。这是一个很重要的时间参数,在很多场合都要用到。
图1.4.4 按键抖动
按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。键抖动会引起一次按键被误读多次。为确保CPU对键的一次闭合仅作一次处理,必须去除键抖动。在键闭合稳定时读取键的状态,并且必须判别到键释放稳定后再作处理。
2.按钮消抖
消抖是为了避免在按键按下或是抬起时电平剧烈抖动带来的影响。按键的消抖,可用硬件或软件两种方法。一般来说,我们会使用软件方法去抖,即检测出键闭合后执行一个延时程序,5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。
软件消抖的方法是不断检测按键值,直到按键值稳定。实现方法:假设未按键时输入1,按键后输入为0,抖动时不定。可以做以下检测:检测到按键输入为0之后,延时5ms~10ms,再次检测,如果按键还为0,那么就认为有按键输入。延时的5ms~10ms恰好避开了抖动期。
【挑战自我】
1.思考能否用模拟变量实现按钮按下LED亮,再按下LED灭?
2.两个按钮控制LED,有哪些效果?思考并尝试实现。
<< 上一篇
下一篇 >>
网友留言(0 条)