电子产品的按键“消抖”处理和Arduino中的Bounce2头文件

原创 2015年07月06日 23:53:46

在电子产品的设计中,考虑到产品的性能与质量,常常需要对按键进行一系列的处理,最常见的就是“消抖”,网络上这方面资料很多,我这里对消抖方法进行一定的总结归纳,另外针对Arduino,介绍其Bounce2库,调用该库既可以制作出“完美”的按键。

 先介绍为什么需要“消抖”:对于一个机械开关,当你按下按键的时候并不会有一个完全的信号,而是会有几毫秒的抖动,采用信号波形表示如下:

  常用的消抖方式可分为两种,一种为硬件消抖,另外一种是软件消抖。硬件消抖需要额外使用器件,增加了成本,并不常用,这里做简要的介绍。

 硬件消抖是采用了R-S触发器,其基本原理是按下开关响应之后,利用R-S触发器对输入端进行封锁,确保输入不会抖动。


 上述电路是常见的一种方式,按下开关前:S'=0,R'=1,输出为A=1,A'=0;按下开关之后:S'=1,R'=0,输出为A=0,A'=1,由于存在着抖动,即R'会在0和1之间跳变,但是此时输出不会变动,因为A=0将与非门封锁,输出A’恒为1,这就是硬件消抖的基本原理,但因为额外增加了成本并不常用。

 最为常用的消抖方式就是通过软件消抖,该方法广泛应用于单片机硬件电路设计中,其基本的原理就是延时消抖,当按键的一刹那,并不让CPU立即处理指令,而是等待一个时间间隔,让按键信号稳定下来。这里我不对具体程序进行介绍,而是给出Arduino中专门处理按键的一个库文件实现按键的“消抖”。该库文件为Bounce2.h,之前的版本是Bounce1,Bounce2是其改进版,二者在使用上有所不同,这里我介绍如何在Arduino在中通过调用Bounce2.h库文件制作一个完美的按键,相关的语句如下:

#include<Bounce2.h> //调用库文件

const unsigned int USE_PIN=13; //定义USE_PIN为Arduino主板上的第13引脚

Bounce use_button=Bounce(); //创建一个Bounce对象

void setup()

{

pinMode(USE_PIN,OUTPUT);

use_button.attach(USE_PIN); //调用Bounce类下的attach()函数,定义按键

use_button.interval(20); //调用interval()函数实现延时20ms的操作

}

上述就是关于处理消抖的相关语句,当然Bounce类下还有一些其他函数,可以帮助我们进行按键的操作,有了这个库文件我们在进行Arduino设计时更加方便。

需要说明的是这个库文件并不是Arduino自带的,需要去网站上进行下载,然后将其解压到Arduino安装文件夹下的libraries文件夹下即可

下载网址为:www.arduino.cc/playground/Code/Bounce

网站上还有一些其他介绍,可以增加对这个库文件的了解。


版权声明:本文为博主原创文章,未经博主允许不得转载。

Arduino的Bounce2库文件

  • 2015年07月07日 01:09
  • 82KB
  • 下载

按键消抖

先上电路图
  • oBerserker
  • oBerserker
  • 2014年08月21日 21:54
  • 113

按键原理和软硬件按键消抖动

系统的信号输入中,键盘因其结构简单而被广泛使用。因此,对键盘的输入(逻辑0或1)进行准确采样,避免错误输入是非常有必要的。理想的键盘输入特性如图1所示:按键没有按下时,输入为逻辑1,一旦按下则输入立刻...
  • shenlei314
  • shenlei314
  • 2015年08月19日 19:19
  • 6271

【Arduino官方教程】数字处理示例(三):按键防抖

按键防抖(Debounce) 按键在按下时,由于机械和物理特定的原因,经常会产生一些开关变换,而这些变换会让程序误认为是短时间内进行了多次按键。本示例展示了如何对输入信号进行防抖,也就是在一段短时间...
  • woshi_ziyu
  • woshi_ziyu
  • 2016年07月06日 22:09
  • 1199

【Arduino官方教程第一辑】示例程序 2-3 按键去抖

由于物理性质和机械特性的原因,矩阵按键经常在按下后的一小段时间产生不定状态。这很可能被程序误认为是短时间内的多次按键操作。本例向你展示如何进行按键去抖。...
  • amagamag
  • amagamag
  • 2016年04月21日 16:45
  • 3690

关于“消抖”

    在处理按键、传感器信号的过程中,常会遇到电平抖动的问题,如不进行有效地处理,将可能导致系统的误动作,如光纤传感器并没有检测到白线而只是因为场地上的微小白点或电路电平的抖动而使传感器信号出现短暂...
  • lian3139
  • lian3139
  • 2010年12月10日 21:19
  • 255

电子产品的按键“消抖”处理和Arduino中的Bounce2头文件

在电子产品的设计中,考虑到产品的性能与质量,常常需要对按键进行一系列的处理,最常见的就是“消抖”,网络上这方面资料很多,我这里对消抖方法进行一定的总结归纳,另外针对Arduino,介绍其Bounce2...
  • Nolan__Roronoa
  • Nolan__Roronoa
  • 2015年07月06日 23:53
  • 2127

【Arduino】1.2 按键的使用

#define LED 13 #define BUTTON 7 int val=0; void setup() { pinMode(LED,OUTPUT); pinMode(BUTTON,INPUT...
  • kajweb
  • kajweb
  • 2016年07月30日 16:51
  • 194

51单片机按键消抖

抖动是机械按键存在的现象,是必须要进行处理的。一般处理有两种方式:一种是硬件消抖,另一种是软件消抖。硬件消抖不仅会增加开发成本,而且有时不稳定。一般都会选择软件消抖。   因为单片机最重要的是测试状...
  • hengliwuyou
  • hengliwuyou
  • 2014年12月16日 14:44
  • 1041

按键消抖电路原理

按键消抖电路原理(FPGA开发中按键消抖与单脉冲发生器电路)   为了使按键消抖电路模块简洁,移植性好,在此用计数器的方式实现按键消抖的功能。   计数器模值n根据抖动信号的脉冲宽度和采样...
  • gtkknd
  • gtkknd
  • 2016年10月12日 14:59
  • 2120
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:电子产品的按键“消抖”处理和Arduino中的Bounce2头文件
举报原因:
原因补充:

(最多只允许输入30个字)