电子产品的按键“消抖”处理和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官方教程第一辑】示例程序 2-3 按键去抖

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

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

修改GitHub上项目语言显示的问题

问题 最近将自己写的博客放到github上了。由于使用了富文本编辑器、jQuery、Bootstrap等第三方插件,导致js、css等代码远远超过你自己写的代码。 于是也就成这样了 而且这里...

python中使用openpyxl 读写excel2007使用笔记

有一万年没来这儿写blog了,今天等着发版,抽空来写点东西吧。 python有很多模块都是用来操作excel的,比如xlrd,xlwt,pyExcelerator。用着很方便,但是问题是,只能支持到...
  • xtx1990
  • xtx1990
  • 2011年11月24日 09:14
  • 4329

电子产品,让人类无沟通能力?

这两天互联网上,谷歌智能眼镜因宣传视频又火了起来,不仅连扎克伯格都出来试带,科技网站ADWEEK更是专门著文称,谷歌智能眼镜会成为市场的颠覆者,这一点与中国互联网行业的颠覆者——周鸿祎有点相像,这不,...
  • cometwo
  • cometwo
  • 2013年02月27日 11:28
  • 648

一次淘宝购买MacBook Pro的经历,让我明白在正规渠道购买电子产品多么重要

一次淘宝购买MacBook Pro的经历,让我明白在正规渠道购买电子产品多么重要故事开端 作为一个开发者(程序猿,说到这就感觉满是泪啊),MacBook Pro可能是最能让自己满意的工具。当然,像我...

MS41909 用于多倍光学变焦镜头及各种小型电子产品的高精度旋转控制

MS41909 用于多倍光学变焦镜头及各种小型电子产品的高精度旋转控制

孩子应该远离电子产品:iPad成儿童视力杀手

新浪上出现了一条题为“iPad成儿童视力第一杀手”的微博,微博称“4岁宝宝近视200度,小朋友视力从1.0降到0.5,眼科诊室外孩子排排坐……他们是iPad控,切水果、读童话、看动画离不开iPad,遭...

蓝牙4.0助力2013电子产品创新

蓝牙4.0市场     低功耗蓝牙技术被广泛应用于消费电子、智能家居、移动医疗等领域,市场预计2013年蓝牙设备年出货量将从2012年的21亿套增至30亿套,累计总出货量将达到118亿套。   ...

加密芯片和芯片解密那些事:如何防止电子产品抄袭

加密芯片的使用越来越多,目前正在给一些国外企业做防抄板保护方案,之前此企业有一款热销产品被抄袭,价格突然从1000元降到200元,如果按照理论计算,损失8000万。在这里也顺便讲讲电子产品抄板那些事。...
  • iotfan
  • iotfan
  • 2017年06月13日 15:09
  • 945
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:电子产品的按键“消抖”处理和Arduino中的Bounce2头文件
举报原因:
原因补充:

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