极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 256781|回复: 133

Arduino入门教程--第四课--按钮控制的LED延时开关

  [复制链接]
发表于 2012-5-28 13:53:29 | 显示全部楼层 |阅读模式
想来大家也完了几天的LED了,总感觉用程序控制LED不是很爽,不能实打实的人机互动,所以,今天制作了一期,人机互动的例子带给大家:用按钮控制LED。但是呢,不能把按钮单纯的作为开关,一按就亮,一放就灭,那样大家会鄙视我的,把Arduino控制器拿掉依旧有效,所以呢,我们提高了点水平,将开关作为延时开关来使用,按下开关后1秒钟,灯才会亮,灯亮5秒后才熄灭,这样大家就能依据这个例子,自己延伸出很多好玩的玩法出来。

首先,老规矩介绍用到的元器件:

ocrobot mango控制板(Arduino兼容)  一块  
专用面包板跳线  一盒  
面包板  一块  
镊子  一把  
LED发光二极管  一个  
按钮开关  一个  
10K欧姆电阻   一个  
220欧姆电阻  一个  
USB数据连接线  一根  














我们来看一下电路连接示意图图



大家应该看到了从开关单独有一个10k欧姆的电阻接到地线,这个电阻是作为下拉电阻使用,具体介绍请参阅:下拉电阻

然后我们就来将电路搭建出来




同样的,我们的布线不是最优布局,也不是最漂亮的,大家在面包板布线上应该多发挥自己的创意,力求做到简单易读,美观大方~

有不少同学反映按键接触不良,造成无法使用,这个主要是因为按键没有完全插进面包板,所以才会有此问题。上两个按键正确插入面包板的图,大家可以参考一下,按入面包板的时候要左右用力均匀,完全压入面包板就可以了。如果往出拿呢,也很简单,可以使用面包板跳线盒中的圆头镊子,慢慢从中间槽中撬出来就可以了。





接下来将我们的程序下载进去
  1. /*
  2. 作者:极客工坊
  3. 时间:2012年5月24日
  4. IDE版本号:1.0.1
  5. 发布地址:[url=http://www.geek-workshop.com]www.geek-workshop.com[/url]
  6. 作用:当你按下按钮后1秒钟,灯会亮,然后维持5秒钟,熄灭
  7. */

  8. void setup ()
  9. {
  10.   pinMode(4,INPUT);                 //将4号数字口设置为输入状态,13号数字口设置为输出状态
  11.   pinMode(13,OUTPUT);
  12. }

  13. void loop()
  14. {
  15.   int n =digitalRead(4);                   //创建一个变量n,将4号数字口的状态采集出来赋值给他。
  16.   if (n==HIGH)                             //判断n是否为高电平,如果是执行下面的语句,不是则跳过。
  17.   {
  18.    
  19.     delay(1000);
  20.     digitalWrite(13,HIGH);
  21.     delay(5000);
  22.     digitalWrite(13,LOW);
  23.    
  24. }
  25. }
复制代码
程序中我们涉及到了一个新语句 ,判断句 If,请参考 arduino语法手册,查阅关于If语句的资料

希望大家不要仅限于只是照做教程的内容,那样没有任何意义, 可以结合之前的教程,将两个实验结合起来,例如可以尝试做一个用两个按钮控制流水灯方向的小项目,大家应该释放自己的创意,梦想和创新才是最重要的
最后附上演示视频




==========分割线 下面为扩展阅读==========

本次实验所用到的语法请点击关键字进入极客工坊WIKI查看,词条内容在WIKI中不定期更新。
void
setup()
loop()
pinMode()
digitalWrite()
delay()
if
int

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

 楼主| 发表于 2012-7-20 22:53:15 | 显示全部楼层
热火 发表于 2012-7-20 22:51
谢谢,那是不是数字I/O口接了5V高电平也不会烧坏?

不能高于5V
回复 支持 1 反对 0

使用道具 举报

发表于 2012-5-28 17:59:25 | 显示全部楼层
完成的教程,期待中,辛苦了!
回复 支持 反对

使用道具 举报

发表于 2012-5-31 15:58:05 | 显示全部楼层
好看,贴主辛苦了
回复 支持 反对

使用道具 举报

发表于 2012-5-31 22:25:54 | 显示全部楼层
学习了支持一下。
回复 支持 反对

使用道具 举报

发表于 2012-6-1 20:24:34 | 显示全部楼层
学习了……话说为啥开关的下拉电阻要选10k?arduino的下拉电阻的大小一般应该怎样选择啊?
回复 支持 反对

使用道具 举报

发表于 2012-6-1 20:49:06 | 显示全部楼层
咨询一下~话说上面那个面包板的图是拿啥软件画的啊?
回复 支持 反对

使用道具 举报

发表于 2012-7-20 21:44:10 | 显示全部楼层
刚接触arduino,我的开关没接10k的下拉电阻,这样会烧掉我的板子吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-20 22:01:57 | 显示全部楼层
热火 发表于 2012-7-20 21:44
刚接触arduino,我的开关没接10k的下拉电阻,这样会烧掉我的板子吗

不会,下拉电阻保证主要为了保证兼容性,抗干扰。不属于保护电路。
回复 支持 反对

使用道具 举报

发表于 2012-7-20 22:51:44 | 显示全部楼层
迷你强 发表于 2012-7-20 22:01
不会,下拉电阻保证主要为了保证兼容性,抗干扰。不属于保护电路。

谢谢,那是不是数字I/O口接了5V高电平也不会烧坏?
回复 支持 反对

使用道具 举报

发表于 2012-7-23 10:40:51 | 显示全部楼层
请教:如果我要俩个按键控两个灯,灯闪亮十秒,两个按键要互锁,就是说如果灯一亮着时按灯二的开光,灯一灭灯二亮,反之也一样,该怎修改程序?谢谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-23 13:06:41 | 显示全部楼层
意见反馈 发表于 2012-7-23 10:40
请教:如果我要俩个按键控两个灯,灯闪亮十秒,两个按键要互锁,就是说如果灯一亮着时按灯二的开光,灯一灭灯二亮 ...

需要先判断灯的状态然后进行控制。用判断方法来处理
回复 支持 反对

使用道具 举报

发表于 2012-7-24 17:34:17 | 显示全部楼层
我按照教程做的,为什么连上数据线,没按开关,就直接亮1秒,灭5秒呢?(图片左边的电阻与旁边的蓝色是错开的)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2012-7-24 17:46:15 | 显示全部楼层
乐_乐(顺) 发表于 2012-7-24 17:34
我按照教程做的,为什么连上数据线,没按开关,就直接亮1秒,灭5秒呢?(图片左边的电阻与旁边的蓝色是错开 ...

蓝色那个线需要接GND,你这里是接到了AREF,所以才会有此问题。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-24 17:48:00 | 显示全部楼层
乐_乐(顺) 发表于 2012-7-24 17:34
我按照教程做的,为什么连上数据线,没按开关,就直接亮1秒,灭5秒呢?(图片左边的电阻与旁边的蓝色是错开 ...



请看此图,地线和电源线中间部分是断开的(需要自己跳线连接),因为下拉电阻没有接地,所以会出现干扰信号触发开关的情况~~~~!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-23 14:29 , Processed in 0.052828 second(s), 30 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表