找回密码
 立即注册

QQ登录

只需一步,快速开始

本帖最后由 hanreng 于 2020-7-1 09:07 编辑

第13课 Mixly开关电位器控制:多程序嵌套


目标

1、按键消抖
2、变量赋值的使用
3、多程序嵌套

实验材料

Arduino UNO开发板,
配套USB数据线
配套杜邦线若干
Mixly软件
配套LED灯模块
配套按钮模块
配套可调电位器模块

内容

接线方式

1.png

Arduino UNO开发板    <------>  LED发光模块
                      3V3/5V   <------>   VCC
                          GND   <------>  GND
                               3    <------>  IN

Arduino UNO开发板  <------>  可调电位器模块
                    3V3/5V   <------>   VCC
                       GND    <------> GND
                          A3    <------>  OUT

Arduino UNO开发板  <------>  按钮模块
                    3V3/5V   <------>   VCC
                        GND   <------>  GND
                            6    <------>  OUT

按键消抖

由于人们按键的时候,手指的力度不一定能保持稳定,同时由于按键内部构造的原因,每按一次有可能会引起一次按键被误读多次。为确保主控板对按键的一次操作仅作一次处理,必须做去抖处理。
按键的去抖方法有硬件去抖和软件去抖两种。所谓硬件去抖是指采用的按键本身就有去抖(防抖功能),在软件操作时无须关系,但这样的按键是比较昂贵,而且特比较难以取得,所以用得最多的是软件去抖。软件去抖放下如下:假设未按键时输入0(低电平),按键后输入为1(高电平),当检测到按键输入为1之后,添加一个延时模块即可,延时时间可以是几十毫秒到100毫秒,需要在实践操作中不断调试得出。

变量赋值的运用——编写台灯程序

按钮控制LED亮灭,实现生活中的台灯基础开关音乐,按一下按钮,LED灯点亮,再按一次,LED灯熄灭。这里,主要用到了变量的赋值,运用赋值,在没有第二次按下按钮时,一直处于上一程序状态。

台灯程序流程图

2.png

K是我们需要更改的变量,在程序的开始时,先对K进行声明,声明K为真,在这,我们要用到的数据类型是布尔,所以初始化程序中,程序模块为“声明K布尔并赋值为真”。判断是否按下管脚6上的按钮,如果按下按钮,首先进行消抖,也就是延时100毫米,其次,判断K是否等于真,因程序的最初声明了K为真,第一次按下按钮时,3号管脚上的LED会亮起,并且,将K赋值为假。第二次按下按钮时,此时K为假,所以在判断K是否等于真时,进入否中,执行LED灯熄灭,重新将K复制为真,第三次按下按钮,LED灯就会再次亮起,以此类推。

程序编写

3.png

多程序嵌套——结合可调电位器

多程序嵌套,即外部程序里面还有一些小的分支程序,一层一层的包在最外层的那条程序里,这样的就是程序的嵌套。
按钮结合可调电位器控制LED灯的亮灭,按钮程序是外部程序,即整个主要大程序,而可调电位器程序,则是外部程序中的分支程序,分支程序不一定是要放在按钮程序内,可以通过按钮程序控制分支程序的执行。

编程思路

4.png

不将可调电位器映射模块放入按钮程序中的原因是,如果放入按钮程序中,也就是赋值K为假上,那只会读取一次可调电位器旋转的模拟值,无法做到LED灯亮度随着可调电位器旋转而发生变化。所以,将这个分支程序放在按钮程序之外,当按下按钮时,判断K是否为真,如果K为真,延时100毫秒,将K赋值为假。这个时候,K为假,可调电位器就可选择调节LED灯的亮度。

程序编写

5.png

分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册