创客联盟网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

开思网在线3D打印服务
查看: 21757|回复: 0
打印 上一主题 下一主题

去抖动的按键库——Debounce

[复制链接]
跳转到指定楼层
楼主
发表于 2013-8-26 12:15:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册(开思网用户可以直接登录),结交更多创客好友,享用更多功能,让你轻松玩转创客社区。

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

x
今天给大家介绍下去抖动的按键库——Debounce Debounce.zip (67.13 KB, 下载次数: 7)
我们之间也说过了,按键按下会发生抖动,抖动?为什么?因为按键里面有块小触片,我们按下按键的时候,我们明显会听到“嘀嗒”一声。声音为什么会产生,那是因为触片震动发出的。扯远了

让大家先感性认识下:
硬件 按键接在D5
[mw_shl_code=cpp,true]#define SWITCH 5
#define LED 13
int flag=0;
void setup()
{
  pinMode(SWITCH,INPUT);
  pinMode(LED,OUTPUT);
}

void loop()
{
if(digitalRead(SWITCH)==LOW)
{
   flag = !flag;
   digitalWrite(LED, flag);//亮,灭LED
}
}[/mw_shl_code]

下载代码到板子之后,你会发现,本来我们想按一下亮,再按一下灭。实际我们得不到这个效果,按下有时候亮了又灭了。其实就是那个抖动导致程序误判,我们虽然按下一次,实际那个抖动相当于按下了很多次。好了。这时候就轮到这个Debounce库上场啦!


[mw_shl_code=cpp,true]// This code turns a led on/off through a debounced switch


#include <Debounce.h>
#define SWITCH 5
#define LED 13

// Instantiate a Debounce object with a 20 millisecond debounce time
Debounce debouncer = Debounce( 20 , SWITCH );

void setup() {
  pinMode(SWITCH,INPUT);
  pinMode(LED,OUTPUT);
}

void loop() {
// Update the debouncer
  debouncer.update ( );

// Get the update value
   digitalWrite(LED, debouncer.read() );

}
[/mw_shl_code]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|创客联盟网  

GMT+8, 2024-4-26 14:08 , Processed in 0.014453 second(s), 14 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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