YFROBOT创客社区
标题: Arduino入门教程—基础实验篇三 按钮控制LED [打印本页]
作者: AllBlue 时间: 2013-5-13 20:09
标题: Arduino入门教程—基础实验篇三 按钮控制LED
本帖最后由 AllBlue 于 2014-3-4 19:32 编辑
按钮控制LED
上面的实验我们都是用简单的程序来控制LED,但是总不能让他一直闪啊闪的,所以今天我们介绍一个新的元器件--按钮。它能让我们主动的控制LED,让我们与元器件之间产生互动。
实验元件:
UNO 实验套装(UNO R3控制板、USB数据线、面包板、跳线)
LED 一枚
按钮开关 一个
电阻 两个(220欧 和10K欧各一个)
下面我们介绍下这个元器件按钮,按钮是一种常用的控制电器元件,常用来接通或断开‘控制电路’(其中电流很小),从而达到控制电动机或其他电气设备运行目的的一种开关(摘自百度百科)。
下面就介绍下我们使用的按钮,经过测试,我们用的按钮开关一共4个引脚分别为1、2、3、4如下图,其中1和2引脚始终相连(以下我们称它为A脚);3和4引脚始终相连(以下我们叫它B脚),当按钮按下时,A脚和B脚连接,不按按钮情况它们不连接。
[attach]264[/attach]
如果身边有万用表的用户可以用万用表来测试下按钮的4个脚的导通情况,这样肯定会使你更加了解它,而且还能记住。
了解了按钮,我们就来使用它做实验吧,下面我们看下我们的电路:首先我们要将LED正极连接到UNO 控制板数字引脚13,负极通过限流电阻220欧连接到GND;然后将按钮的A脚连接到UNO 控制板5V引脚,将B脚接到数字引脚12,再将B脚通过10k欧电阻接GND;这样我们的电路就搭建完成,看下图:
[attach]473[/attach]
电路完成,下面我们看下程序吧:
- /*
- 按键控制 LED
- 读取按键值,来点亮LED灯
- */
- #define LED 13 //定义LED引脚为13
- #define BUTTON 12 //定义按钮开关引脚为12
- int val = 0; //变量val用来储存按钮状态
- void setup(){
- pinMode(LED, OUTPUT); //设定LED引脚为输出状态
- pinMode (BUTTON,INPUT); //设定按钮引脚为输入状态
- }
- void loop(){
- val = digitalRead(BUTTON); //读取按钮状态并储存
- //当按钮按下时,设定val为HIGH
- if (val == HIGH){
- digitalWrite(LED,HIGH); //开启LED灯
- }else{
- digitalWrite(LED,LOW); //关闭LED灯
- }
- }
复制代码将上面的程序复制到IDE中,编译上传,就可以看看实验成果了:当按钮按下,LED点亮,放开按钮,LED熄灭。
看到上面的程序,大家肯定会想,这样的话我们想要点亮LED,手就不能离开按钮了,这样很不方便呢,怎么才能像家里控制电灯一样,按一下点亮,再按下熄灭呢,没关系,我们可以改进程序,使得可以实现这样的效果,我们看下程序:
- /*
- 按键控制 LED
- 按键控制LED的关闭与开启
- 按一下按钮,LED灯亮,再次按一下按钮,LED灭
- */
- #define LED 13 //定义LED引脚为13
- #define BUTTON 12 //定义按钮开关引脚为12
- int val = 0; //变量val用来储存按钮状态
- int old_val = 0; //暂存val变量的上一个时间单位
- int state = 0; //0表示LED关闭,1表示打开
- void setup(){
- pinMode(LED, OUTPUT); //设定LED引脚为输出状态
- pinMode (BUTTON,INPUT); //设定按钮引脚为输入状态
- }
- void loop(){
- val = digitalRead(BUTTON); //读取按钮状态并储存
- //检查按钮的变化情况
- if((val == HIGH)&&(old_val == LOW)){
- state =1-state;
- delay(40); //延时简单抗抖动
- }
- old_val = val; //val下载已经是旧的了,让我们暂存一下
- if (state == 1){
- digitalWrite(LED,HIGH); //开启LED灯
- }else{
- digitalWrite(LED,LOW); //关闭LED灯
- }
- }
复制代码上面的程序下载到控制板中后,我们可以发现,我们想要的效果出现了,我们的手也空闲下来,想让LED亮就亮,想让它灭,它就灭!
程序中我们通过这次对比上次按钮的状态值,来判断我们是否按了一下按钮,从而来实现点亮LED,和熄灭它!
作者: AllBlue 时间: 2013-5-13 20:09
占沙发
作者: 依梅科技 时间: 2015-12-29 18:49
这个失败了怎么搞?
作者: AllBlue 时间: 2015-12-30 11:27
什么情况呢
作者: tiantianyouyou 时间: 2019-5-20 08:23
感谢楼主分享。
欢迎光临 YFROBOT创客社区 (http://yfrobot.com.cn/) |
Powered by Discuz! X3.1 |