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

2019-06-048.8万
AI 快速预览详细 收起
本文介绍了使用Arduino Uno和按钮实现简单输入输出控制的三个小任务。第一个任务是让按钮简单工作,按下按钮灯亮,松开按钮灯灭。第二个任务是简易延时灯,按下按钮灯亮3秒后自动熄灭。第三个任务是使用按钮模拟开关,每次按下按钮LED灯切换亮灭。通过这些任务,初学者可以轻松掌握Arduino Uno的基本用法。
【Mind+】Arduino Uno入门 项目三 神奇的按钮
-DFRobot官方出品

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

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

*项目示例

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

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

任务一:让按钮简单工作

1. 实现功能

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

2. 硬件连接

      按钮à3;LEDà10。注意插线时的颜色对应。
【Mind+】Arduino Uno入门  项目三  神奇的按钮图1
3. 程序编写

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

【Mind+】Arduino Uno入门  项目三  神奇的按钮图2
      输入设备向控制设备发送信号,控制设备对其进行处理,并控制输出设备进行相应的输出工作。

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

      程序如下图所示:
【Mind+】Arduino Uno入门  项目三  神奇的按钮图3

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

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

任务二:简易延时灯

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

2. 程序编写:
【Mind+】Arduino Uno入门  项目三  神奇的按钮图4

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

【Mind+】Arduino Uno入门  项目三  神奇的按钮图5

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

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

1. 实现功能

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

2. 程序编写:
【Mind+】Arduino Uno入门  项目三  神奇的按钮图6

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

知识点小结

元件
  • 按钮

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

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(22)
钢镚
钢镚
鸡肤鹤发很反感或过过过过过过过过过过过过过过过过过过过过过过过过过过过过过过过过过过过过过过过过过过过过过过过过过过过过过过过过
133563736221211
133563736221211
老师好,我是小白。请您解惑,这样的程序为什么按钮灯没反应呢?
图片不会传,就是任务二中把“重复执行”去掉,按下按钮,灯就不会亮
鬼斧神工
鬼斧神工
读取数字引脚3的作用是什么?不明白,求解答。
EVE
EVE
作者
回复鬼斧神工
引脚3接了按钮,所以读取数字引脚3的作用是读取按钮是否被按下
花生编程
花生编程
感谢分享!
花生编程
花生编程
学习了!
花生编程
花生编程
厉害厉害
aYYSW8AepLLd
aYYSW8AepLLd
太好了,终于解决了我的程序bug了
CUSqOl5Y3AiS
CUSqOl5Y3AiS
最后一个,按键按下开关,按下关灯,网上给的程序不能实现开关灯效果。大家试了一没!我改了下,可以了!大家看看!这个程序多加0.2S的消抖,效果更好点,大家看看!
CUSqOl5Y3AiS
CUSqOl5Y3AiS
最后一个,按键按下开关,按下关灯,网上给的程序不能实现开关灯效果。大家试了一没!我改了下,可以了!大家看看!
reallllnnp
reallllnnp
按照图示连接电路,代码也一样,但是不起作用,不知道是不是因为灯和按钮的构造不同接线要有改动
小军军
小军军
老师,任务二简易延时灯,确定程序就是这样?如果 “读取数字引脚3 ”那么执行,就可以了?不用加上引脚3等于什么值?
EVE
EVE
作者
回复小军军
是的,可以加上等于也可以不加,因为如果语句判断的是逻辑值,高低电平的01值也可以理解为逻辑值,判断结果的成立、不成立也是逻辑值
小奥19
小奥19
老师为什么我的和你写的一样就是不行,换成这样就可以实现了
小军军
小军军回复小奥19
应该是按钮变量值不一样的原因,有的按钮松开是1,按下是0
DFrJ5KYVQaH
DFrJ5KYVQaH
不错,学了两课了
鲨首
鲨首
不知道为什么,我的电路和程序必须要串联一个电阻才能运行。去掉电阻,LED就会频闪。版主能帮忙看下吗?
wbin2019
wbin2019
A0-A5不是模拟接口吗,怎么也能数字输入?
Rae
Rae
太好了
gray6666
gray6666
很有意思,赞一个
275337919
275337919
谢谢
驴友花雕
驴友花雕
谢谢老师,改动了一下,可以了

驴友花雕
驴友花雕

原样学您的
上传后,13脚LED半秒亮半秒灭,按下3按键灭,松开恢复;第二次按下亮,松开恢复......
原理还不太懂,特向您请教,谢谢老师
腿毛利小五郎
腿毛利小五郎回复EVE
谢谢老师
驴友花雕
驴友花雕回复EVE
谢谢老师,麻烦这个案例的完整程序,我来学习一下
共3条回复,已加载2条,点击查看更多共3条回复,已加载全部