极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: 迷你强

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

  [复制链接]
 楼主| 发表于 2013-4-2 09:20:50 | 显示全部楼层
dushiyizhan 发表于 2013-3-29 22:04
请问词条“下拉电阻”在哪里查阅?

维基百科,google或者其他你的资料查阅的地方
回复 支持 反对

使用道具 举报

发表于 2013-4-2 21:36:34 | 显示全部楼层
迷你强 发表于 2013-4-2 09:20
维基百科,google或者其他你的资料查阅的地方

多谢!
回复 支持 反对

使用道具 举报

发表于 2013-4-2 22:02:09 | 显示全部楼层
迷你强 发表于 2013-4-2 09:20
维基百科,google或者其他你的资料查阅的地方

请问下拉电阻有没有明确的阻值要求?必须10K?或者越大越好?另外求BGM曲名。。。。  谢过!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-4-2 22:18:47 | 显示全部楼层
dushiyizhan 发表于 2013-4-2 22:02
请问下拉电阻有没有明确的阻值要求?必须10K?或者越大越好?另外求BGM曲名。。。。  谢过!

这个我也不太清楚,反正就这么用取1k-10k 任意,。。。 音乐是岸部真名的吉他曲专辑。。。。
回复 支持 反对

使用道具 举报

发表于 2013-4-2 23:13:27 | 显示全部楼层
迷你强 发表于 2013-4-2 22:18
这个我也不太清楚,反正就这么用取1k-10k 任意,。。。 音乐是岸部真名的吉他曲专辑。。。。

谢谢!不过既然是为消除种种干扰,还是大一点比较好。
回复 支持 反对

使用道具 举报

发表于 2013-4-22 21:39:18 | 显示全部楼层
遇到了和前面那位同学一样的问题,原来我们的板子是有点区别。
回复 支持 反对

使用道具 举报

发表于 2013-5-4 22:44:42 | 显示全部楼层
上电后等就闪了,经过了仔细排查才发现程序中犯了2个错误:
1)n=HIGH(应该是n==HIGH)
2) if (n==HIGH); 多了个;
修改后终于成功了
回复 支持 反对

使用道具 举报

发表于 2013-6-18 21:25:16 | 显示全部楼层
想尝试两个课程合成一个代码文件来执行
回复 支持 反对

使用道具 举报

发表于 2013-6-18 22:23:09 | 显示全部楼层
试了下不接10K电阻有时按钮不起作用或按键正好相反,具体为什么会这样不明白
回复 支持 反对

使用道具 举报

发表于 2013-7-12 00:28:31 | 显示全部楼层


制作成功了,但是灯是要依次亮过后按另外一个按钮才能反向亮灯,我代码要如何改才能够让灯在亮的途中按另一个按钮立即就反向亮呢?我现在的代码是这样的:

  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.   for(int i=8;i<=13;i++)
  11.   pinMode(i,OUTPUT);
  12.   pinMode(4,INPUT);
  13.   pinMode(5,INPUT);
  14. }
  15. void loop()
  16. {
  17.   int n =digitalRead(4);
  18.   int m =digitalRead(5);
  19.   if (n==HIGH)                           
  20.   {
  21.     for(int x=8;x<=13;x++)
  22.     {
  23.       digitalWrite(x,HIGH);
  24.       delay(500);
  25.       digitalWrite(x,LOW);
  26.       delay(500);
  27.     }
  28.   }
  29.   if (m==HIGH)                           
  30.   {
  31.     for(int y=13;y>=8;y--)
  32.     {
  33.       digitalWrite(y,HIGH);
  34.       delay(500);
  35.       digitalWrite(y,LOW);
  36.       delay(500);
  37.     }
  38.   }
  39. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2013-7-12 09:04:19 | 显示全部楼层
Mr.Roe 发表于 2013-7-12 00:28
制作成功了,但是灯是要依次亮过后按另外一个按钮才能反向亮灯,我代码要如何改才能够让灯在亮的途中按 ...

你可以使用外部中断来达到立刻改变状态。可以参考这篇帖子。
http://www.geek-workshop.com/thread-1983-1-1.html
回复 支持 反对

使用道具 举报

发表于 2013-7-12 16:51:10 | 显示全部楼层
弘毅 发表于 2013-7-12 09:04
你可以使用外部中断来达到立刻改变状态。可以参考这篇帖子。
http://www.geek-workshop.com/thread-1983 ...

谢谢大大!
回复 支持 反对

使用道具 举报

发表于 2013-8-8 00:42:45 | 显示全部楼层
本帖最后由 chaoser 于 2013-8-8 00:45 编辑
弘毅 发表于 2012-12-10 19:17
参考这篇帖子里的消抖部分,做一下按键消抖。
http://www.geek-workshop.com/thread-74-1-1.html


前辈,看了您软件消抖的文章后,我的理解是用延时来挺过抖动的那段时间。可是麻烦您看一下我这个简单的实验:

电路非常简单,用板子上的L灯来闪烁:


程序如下:
  1. /* 程序功能:每按一次按钮,改变一次明灭状态 */

  2. void setup() {
  3.   pinMode(4,INPUT);
  4.   pinMode(13,OUTPUT);
  5. }

  6. void loop() {
  7.   if (digitalRead(4)==HIGH) {
  8.     digitalWrite(13,!digitalRead(13));
  9.     delay(1000);
  10.   }
  11. }
复制代码


实验结果是:
1、基本达到预想,每按一次,就由亮变灭或由灭变亮;
2、不能连续按,否则状态不改变。最小间隔大约在1秒左右;
3、用手指摩擦黄线,有点亮L灯的情况出现。

可以判断是存在抖动情况,但我明明在改变状态后delay了1000ms啊?

麻烦哪位高人帮我判断一下问题所在及解决方法,多谢。

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2013-8-18 04:28:47 | 显示全部楼层
按钮的电路有俩个回路,表示看不大懂着是什么概念? 一个回路,按钮开表示高位点评,关表示低位电平不就可以了?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-18 10:34:09 | 显示全部楼层
hick 发表于 2013-8-18 04:28
按钮的电路有俩个回路,表示看不大懂着是什么概念? 一个回路,按钮开表示高位点评,关表示低位电平不就可以 ...

有一个是下拉电路,避免IO口悬空受到电磁干扰误触发
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-4-23 21:13 , Processed in 0.052964 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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