【Mind+】Arduino Uno入门 项目三 神奇的按钮
【Mind+】Arduino Uno入门 项目三 神奇的按钮-DFRobot官方出品
上一篇:【Mind+】Arduino Uno入门教程02S.O.S. 下一篇:【Mind+】Arduino Uno入门教程04简易入侵检测仪
按钮是我们在这套元件中接触的第一个输入设备,具有按下(高)和抬起(低)两种状态。默认状态为抬起。生活中的按钮可以说无处不在,遥控器、计算器、手机、电脑等各种电子设备上的按键,都是按钮。
*项目示例
可以通过以下三个小任务进行实践:
■ 任务一:让按钮简单工作
■ 任务二:简易延时灯
■ 任务三:使用按钮模拟开关
任务一:让按钮简单工作
1. 实现功能
按下按钮灯亮,松开按钮灯灭。
2. 硬件连接
按钮à3;LEDà10。注意插线时的颜色对应。 3. 程序编写
首先是实现功能的逻辑,如下图:
输入设备向控制设备发送信号,控制设备对其进行处理,并控制输出设备进行相应的输出工作。
当按钮被按下时,向 3 号管脚输入高电平,此时 10 号管脚应输出高电平;当按钮被抬起时,向 3 号管脚输入低电平,此时 10 号管脚应输出低电平。
程序如下图所示:
数字输入:有两种状态,即“高”和“低”。按钮按下为高,抬起为低。
支持数字输入的管脚为:2~13,A0~A5(其实 0 号和 1 号管脚也支持数字输入,但因为负责串口通信功能,一般情况下不使用)。
任务二:简易延时灯
1. 实现功能 按下按钮灯亮,3 秒钟后灯灭。
2. 程序编写:
这里我们看到了一个新的结构——条件结构。它是如何应用的呢?请看下图:
如果当前状态符合判断条件的要求,判断模块内(黑色边框内的)的程序将会被执行。如果不符合,则那部分代码将会被跳过,直接执行接下来红色框中的程序。
任务三:使用按钮模拟开关
1. 实现功能
每次按下,LED 灯切换亮灭。
2. 程序编写:
这段程序中,我们使用了定义变量的模块。变量的名称是i。设置i的值为0指令,在整个程序运行过程中只执行一次,相当于对变量i的值初始化为0。 程序中等待0.5秒用于消除按键抖动。
知识点小结
元件
[*]按钮
Mind+ 程序模块
[*] 数字输入
[*]条件判断
驴友花雕 发表于 2019-6-6 11:33
原样学您的
上传后,13脚LED半秒亮半秒灭,按下3按键灭,松开恢复;第二次按下亮,松开恢复......
老师,您好!我的理解具体如下,希望可以解决您的问题。用如图所示的黄色按钮连接3号引脚后,可以通过串口打印读取数字引脚3,可以发现,当按下黄色按钮时,读取数字引脚3的值为1。当黄色按钮弹起时,读取数组引脚3的值为0。在这里会发现,一直按就会一直输出1。所以,一般情况下,会在后面加等待指令,等待0.5秒比较接近按键的时间。
判断语句中读取数字引脚3指令,默认的含义是判断数字引脚3是否为1,也就是判断按钮是否按下,如果按下,则执行下面的语句。可通过下图语句尝试一下。
本案例想实现的效果是,刚开始小灯不亮,按下按钮后,小灯亮。再按一次按钮,小灯灭。这里可以通过变量来改变状态,比如定义变量i,i=0时,灯不亮。i=1时,灯亮。一开始灯不亮。当按下按钮时,灯亮,令i=1。当再次按下按钮时,灯灭,也就是令i=0。一直循环进行。也就是,一开始的时候,i=0。当按下按钮时,如果i=0,则令i=1,灯亮。如果i=1,则令i=0,灯灭。一直循环判断。大体上就是这个思路,希望可以解决您的问题。
小军军 发表于 2021-5-17 16:30
老师,任务二简易延时灯,确定程序就是这样?如果 “读取数字引脚3 ”那么执行,就可以了?不用加上引脚3等 ...
是的,可以加上等于也可以不加,因为如果语句判断的是逻辑值,高低电平的01值也可以理解为逻辑值,判断结果的成立、不成立也是逻辑值 DFBmjf 发表于 2020-5-5 17:28
请教下大神,DF蓝牙模块BLE-Link怎么与手机配对?
刚开贴,还没开始做实验呢
MicroPython动手做(23)——掌控板之WiFi与蓝牙
https://mc.dfrobot.com.cn/thread-305200-1-1.html#pid455418 老师好,我在向您学习,任务三,使用按钮模拟开关为何通不过呢? 驴友花雕 发表于 2019-6-4 21:44
老师好,我在向您学习,任务三,使用按钮模拟开关为何通不过呢?
老师,您的具体问题是? 老师好,我是新人,刚开始学习Arduino不久,也买了Vortex https://mc.dfrobot.com.cn/forum.php?mod=image&aid=75664&size=300x300&key=9cf1559a9f2c57e4&nocache=yes&type=fixnone
原样学您的
上传后,13脚LED半秒亮半秒灭,按下3按键灭,松开恢复;第二次按下亮,松开恢复......
原理还不太懂,特向您请教,谢谢老师
谢谢老师,改动了一下,可以了
0N97Or1c 发表于 2019-6-5 16:34
老师,您的具体问题是?
参考您的任务一的程序,对读取按键限为等于0,才解决问题的,谢谢老师
谢谢 0N97Or1c 发表于 2019-6-19 11:48
老师,您好!我的理解具体如下,希望可以解决您的问题。用如图所示的黄色按钮连接3号引脚后,可以通过串 ...
谢谢老师,麻烦这个案例的完整程序,我来学习一下 驴友花雕 发表于 2019-6-4 21:44
老师好,我在向您学习,任务三,使用按钮模拟开关为何通不过呢?
可以完成,我试验过 钟 发表于 2019-6-30 13:16
可以完成,我试验过
我后来改动了一下,也通过了 很有意思,赞一个 太好了 A0-A5不是模拟接口吗,怎么也能数字输入? 驴友花雕 发表于 2019-6-4 21:44
老师好,我在向您学习,任务三,使用按钮模拟开关为何通不过呢?
我的可以,任务三按教程一次通过了! DFBmjf 发表于 2020-4-30 11:47
我的可以,任务三按教程一次通过了!
{:5_190:}你真棒,加油 驴友花雕 发表于 2020-4-30 12:02
你真棒,加油
请教下大神,DF蓝牙模块BLE-Link怎么与手机配对? 不知道为什么,我的电路和程序必须要串联一个电阻才能运行。去掉电阻,LED就会频闪。版主能帮忙看下吗? 不错,学了两课了
页:
[1]
2