太行摄狼 发表于 2013-2-22 21:01:24

0.1电容很重要啊

玄冰之神 发表于 2013-4-16 11:32:05

:lol学习中。。。。

hick 发表于 2013-9-10 22:37:43

遥控小车都可以跑了, 发现我还不会用这个小开关。 这篇释了不少疑。 不过还是纳闷,“按键开关串联在led的电路中来开关,这种应用情况比较单一。”按照电路图和远离,按下去才能接通,这还能串联用作开关?要开得按着不懂???

弘毅 发表于 2013-9-18 20:28:16

hick 发表于 2013-9-10 22:37 static/image/common/back.gif
遥控小车都可以跑了, 发现我还不会用这个小开关。 这篇释了不少疑。 不过还是纳闷,“按键开关串联在led ...

:lol当导线用。。。。默认关,按下去开

王心诚 发表于 2013-10-6 18:37:06

有用, 学习了

AlfredLanning 发表于 2013-10-17 19:14:39

想了好久都觉得可以不用一下代码,while(digitalRead(Button)==HIGH) //判断按钮状态,如果仍然按下的话,等待松开。防止一直按住导致LED输出端连续反转
      {
      delay(1);
      }因为在没有这段代码的情况下,就算一直按着按钮,但是以下条件不满足if(digitalRead(Button)==LOW)也就无法执行LED端反转的代码

冬时唯美 发表于 2013-10-29 19:09:23

:lol:lol:lol:lol:lol:lol

机智的小学生 发表于 2014-4-20 11:09:13

讲解详细!!!!!!认真学习!!!!!

WLZ 发表于 2014-6-18 22:19:12

:):):):):):):)

zgkjzf 发表于 2014-10-11 22:26:23

感谢 非常有用

李晓磊 发表于 2014-10-31 11:37:37

单个按键控制单个led的程序,实验了下很好用。但是我现在用3个按键控制3个led灯 就出现问题了。控制出现混乱(有时候按好多次才能亮,有时候按好多次都不亮,有时候按一次就亮,很混乱),不知道应该如何解决,麻烦给下提示。

李晓磊 发表于 2014-10-31 11:38:08

单个按键控制单个led的程序,实验了下很好用。但是我现在用3个按键控制3个led灯 就出现问题了。控制出现混乱(有时候按好多次才能亮,有时候按好多次都不亮,有时候按一次就亮,很混乱),不知道应该如何解决,麻烦给下提示。

suoma 发表于 2015-4-12 18:29:27

谢谢分享学习一下

cqy1988 发表于 2015-7-26 12:50:04

{
if(digitalRead(Button)==LOW) //由于本例检测上升沿触发,所以先检测输入是否低电平,
{
    delay(10); //然后延时一段时间,
    if(digitalRead(Button)==HIGH) //然后检测是不是电平变为高了。是的话,就是刚好按钮按下了。
    {
      digitalWrite(LED,onoff);//写入当前LED状态onoff,
      onoff=(!onoff); //然后LED状态反转,以便下一次使用。
      delay(10);//延时一段时间,防止按钮突然断开再按下。
      while(digitalRead(Button)==HIGH) //判断按钮状态,如果仍然按下的话,等待松开。防止一直按住导致LED输出端连续反转
      {
      delay(1);
      }
    }
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////
if(digitalRead(Button)==LOW)//由于本例检测上升沿触发,所以先检测输入是否低电平
这一句有必要写吗?原理图上有下拉电阻,按键不按下,IO3一直是低电平,按下才会是高电平。所以个人认为这句改成:
if(digitalRead(Button)==HIGH)
最后结果改成这样:
if(digitalRead(Button)==HIGH) //检测是够有按键按下?
{
    delay(10); //延时一段时间,
    if(digitalRead(Button)==HIGH) //确认有按键按下
    {
                   以后语句不变


(实际例子代码严格说也是有bug的:

if(digitalRead(Button)==LOW)//由于本例检测上升沿触发,所以先检测输入是否低电平,
{
    delay(10); //然后延时一段时间,
    if(digitalRead(Button)==HIGH) //然后检测是不是电平变为高了。是的话,就是刚好按钮按下了。
    {



sawyer 发表于 2015-8-16 18:38:47

这种方法做的消除抖动效果一般,最好是用定时器,采样8次,判断中间两次,间隔1ms,这样的效果非常好
页: 1 2 3 [4] 5
查看完整版本: arduino学习笔记6 - 按键实验