查看: 2165|回复: 14

[教程] 【Mind+】Arduino Uno入门 项目三 神奇的按钮

[复制链接]
【Mind+】Arduino Uno入门 项目三 神奇的按钮
-DFRobot官方出品

上一篇:【Mind+】Arduino Uno入门教程02  S.O.S.
下一篇:【Mind+】Arduino Uno入门教程04  简易入侵检测仪

      按钮是我们在这套元件中接触的第一个输入设备,具有按下(高)和抬起(低)两种状态。默认状态为抬起。生活中的按钮可以说无处不在,遥控器、计算器、手机、电脑等各种电子设备上的按键,都是按钮。

*项目示例

      可以通过以下三个小任务进行实践:

      ■ 任务一:让按钮简单工作
      ■ 任务二:简易延时灯
      ■ 任务三:使用按钮模拟开关

任务一:让按钮简单工作

1. 实现功能

      按下按钮灯亮,松开按钮灯灭。

2. 硬件连接

      按钮à3;LEDà10。注意插线时的颜色对应。
12.jpg
3. 程序编写

      首先是实现功能的逻辑,如下图:

13.jpg
      输入设备向控制设备发送信号,控制设备对其进行处理,并控制输出设备进行相应的输出工作。

      当按钮被按下时,向 3 号管脚输入高电平,此时 10 号管脚应输出高电平;当按钮被抬起时,向 3 号管脚输入低电平,此时 10 号管脚应输出低电平

      程序如下图所示:
14.jpg

      数字输入:有两种状态,即“高”和“低”。按钮按下为高,抬起为低。

      支持数字输入的管脚为:2~13,A0~A5(其实 0 号和 1 号管脚也支持数字输入,但因为负责串口通信功能,一般情况下不使用)。

任务二:简易延时灯

1. 实现功能
      按下按钮灯亮,3 秒钟后灯灭。

2. 程序编写:
15.jpg

      这里我们看到了一个新的结构——条件结构。它是如何应用的呢?请看下图:

16.jpg

      如果当前状态符合判断条件的要求,判断模块内(黑色边框内的)的程序将会被执行。如果不符合,则那部分代码将会被跳过,直接执行接下来红色框中的程序。

任务三:使用按钮模拟开关

1. 实现功能

      每次按下,LED 灯切换亮灭。

2. 程序编写:
17.jpg

      这段程序中,我们使用了定义变量的模块。变量的名称是i。设置i的值为0指令,在整个程序运行过程中只执行一次,相当于对变量i的值初始化为0。 程序中等待0.5秒用于消除按键抖动。

知识点小结

元件
  • 按钮

Mind+ 程序模块
  • 数字输入
  • 条件判断

驴友花雕  高级技师

发表于 2019-6-4 21:44:42

老师好,我在向您学习,任务三,使用按钮模拟开关为何通不过呢?
回复 支持 反对

使用道具 举报

0N97Or1c  初级技师
 楼主|

发表于 2019-6-5 16:34:50

驴友花雕 发表于 2019-6-4 21:44
老师好,我在向您学习,任务三,使用按钮模拟开关为何通不过呢?

老师,您的具体问题是?
回复 支持 反对

使用道具 举报

驴友花雕  高级技师

发表于 2019-6-6 11:27:16

老师好,我是新人,刚开始学习Arduino不久,也买了Vortex
回复 支持 反对

使用道具 举报

驴友花雕  高级技师

发表于 2019-6-6 11:33:40



原样学您的

上传后,13脚LED半秒亮半秒灭,按下3按键灭,松开恢复;第二次按下亮,松开恢复......

原理还不太懂,特向您请教,谢谢老师


360截图20190606112330548.jpg
回复 支持 反对

使用道具 举报

驴友花雕  高级技师

发表于 2019-6-11 12:00:35

谢谢老师,改动了一下,可以了
06--.jpg
回复 支持 反对

使用道具 举报

驴友花雕  高级技师

发表于 2019-6-11 12:04:25

0N97Or1c 发表于 2019-6-5 16:34
老师,您的具体问题是?

参考您的任务一的程序,对读取按键限为等于0,才解决问题的,谢谢老师
回复 支持 反对

使用道具 举报

275337919  学徒

发表于 2019-6-17 20:57:54

谢谢
回复 支持 反对

使用道具 举报

0N97Or1c  初级技师
 楼主|

发表于 2019-6-19 11:48:01

驴友花雕 发表于 2019-6-6 11:33
原样学您的

上传后,13脚LED半秒亮半秒灭,按下3按键灭,松开恢复;第二次按下亮,松开恢复......

老师,您好!我的理解具体如下,希望可以解决您的问题。用如图所示的黄色按钮连接3号引脚后,可以通过串口打印读取数字引脚3,可以发现,当按下黄色按钮时,读取数字引脚3的值为1。当黄色按钮弹起时,读取数组引脚3的值为0。在这里会发现,一直按就会一直输出1。所以,一般情况下,会在后面加等待指令,等待0.5秒比较接近按键的时间。
黄色按钮.jpg
黄色按钮连接三号引脚,按下时读取数字引脚3是1,弹起时数字引脚3是0.jpg.jpg
判断语句中读取数字引脚3指令,默认的含义是判断数字引脚3是否为1,也就是判断按钮是否按下,如果按下,则执行下面的语句。可通过下图语句尝试一下。
截图201906191133057193.png

本案例想实现的效果是,刚开始小灯不亮,按下按钮后,小灯亮。再按一次按钮,小灯灭。这里可以通过变量来改变状态,比如定义变量i,i=0时,灯不亮。i=1时,灯亮。一开始灯不亮。当按下按钮时,灯亮,令i=1。当再次按下按钮时,灯灭,也就是令i=0。一直循环进行。也就是,一开始的时候,i=0。当按下按钮时,如果i=0,则令i=1,灯亮。如果i=1,则令i=0,灯灭。一直循环判断。

大体上就是这个思路,希望可以解决您的问题。


回复 支持 反对

使用道具 举报

驴友花雕  高级技师

发表于 2019-6-20 06:38:10

0N97Or1c 发表于 2019-6-19 11:48
老师,您好!我的理解具体如下,希望可以解决您的问题。用如图所示的黄色按钮连接3号引脚后,可以通过串 ...

谢谢老师,麻烦这个案例的完整程序,我来学习一下
回复 支持 反对

使用道具 举报

 学徒

发表于 2019-6-30 13:16:33

驴友花雕 发表于 2019-6-4 21:44
老师好,我在向您学习,任务三,使用按钮模拟开关为何通不过呢?

可以完成,我试验过
回复 支持 反对

使用道具 举报

驴友花雕  高级技师

发表于 2019-6-30 19:08:16

钟 发表于 2019-6-30 13:16
可以完成,我试验过

我后来改动了一下,也通过了
回复 支持 反对

使用道具 举报

gray6666  高级技匠

发表于 2019-7-4 10:12:00

很有意思,赞一个
回复 支持 反对

使用道具 举报

Rae  学徒

发表于 2019-7-17 09:21:07

太好了
回复 支持 反对

使用道具 举报

wbin2019  学徒

发表于 2019-11-4 10:27:07

A0-A5不是模拟接口吗,怎么也能数字输入?

纠错

纠错
回复 支持 反对

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
wifi气象站

硬件清单

btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2019 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail