创客联盟网

标题: 去抖动的按键库——Debounce [打印本页]

作者: CCFIVE    时间: 2013-8-26 12:15
标题: 去抖动的按键库——Debounce
今天给大家介绍下去抖动的按键库——Debounce (, 下载次数: 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]





欢迎光临 创客联盟网 (https://immaker.org/) Powered by Discuz! X3.3