极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: 弘毅

arduino学习笔记6 - 按键实验

  [复制链接]
发表于 2013-2-22 21:01:24 | 显示全部楼层
0.1电容很重要啊
回复 支持 反对

使用道具 举报

发表于 2013-4-16 11:32:05 | 显示全部楼层
学习中。。。。
回复 支持 反对

使用道具 举报

发表于 2013-9-10 22:37:43 | 显示全部楼层
遥控小车都可以跑了, 发现我还不会用这个小开关。 这篇释了不少疑。 不过还是纳闷,  “按键开关串联在led的电路中来开关,这种应用情况比较单一。”  按照电路图和远离,按下去才能接通,这还能串联用作开关?  要开得按着不懂???
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-18 20:28:16 | 显示全部楼层
hick 发表于 2013-9-10 22:37
遥控小车都可以跑了, 发现我还不会用这个小开关。 这篇释了不少疑。 不过还是纳闷,  “按键开关串联在led ...

当导线用。。。。默认关,按下去开
回复 支持 反对

使用道具 举报

发表于 2013-10-6 18:37:06 | 显示全部楼层
有用, 学习了
回复 支持 反对

使用道具 举报

发表于 2013-10-17 19:14:39 | 显示全部楼层
想了好久都觉得可以不用一下代码,
  1. while(digitalRead(Button)==HIGH) //判断按钮状态,如果仍然按下的话,等待松开。防止一直按住导致LED输出端连续反转
  2.       {
  3.         delay(1);
  4.       }
复制代码
因为在没有这段代码的情况下,就算一直按着按钮,但是以下条件不满足
  1. if(digitalRead(Button)==LOW)
复制代码
也就无法执行LED端反转的代码
回复 支持 反对

使用道具 举报

发表于 2013-10-29 19:09:23 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2014-4-20 11:09:13 | 显示全部楼层
讲解详细!!!!!!认真学习!!!!!
回复 支持 反对

使用道具 举报

发表于 2014-6-18 22:19:12 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 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灯 就出现问题了。控制出现混乱(有时候按好多次才能亮,有时候按好多次都不亮,有时候按一次就亮,很混乱),不知道应该如何解决,麻烦给下提示。
回复 支持 反对

使用道具 举报

发表于 2015-4-12 18:29:27 | 显示全部楼层
谢谢分享学习一下
回复 支持 反对

使用道具 举报

发表于 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) //然后检测是不是电平变为高了。是的话,就是刚好按钮按下了。
    {



本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2015-8-16 18:38:47 | 显示全部楼层
这种方法做的消除抖动效果一般,最好是用定时器,采样8次,判断中间两次,间隔1ms,这样的效果非常好
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 08:09 , Processed in 0.059462 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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