#Arduino,去抖动

实现:用开关控制LED灯亮灭时去除按钮抖动的干扰

代码

int a=0;
int BUTTON = 8;
int LED = 13;
int BUTTON_STATE = 0;
int time1=0;
int time2 = 0;
int b=0;//判断是否为抖动状态
void setup() {
  pinMode(LED,OUTPUT);
  pinMode(BUTTON,INPUT_PULLUP);
}
void loop() {
  BUTTON_STATE = digitalRead(BUTTON);
  if(BUTTON_STATE==LOW && (a%2)==0){
      time2=millis();//开始计时
      if(abs(time1-time2)<=20)  b=1;//时间间隔太短判断为抖动
      else                      b=0;
      if(b==0)    a++; //若为抖动,此次不算
  }
  if(BUTTON_STATE==HIGH && (a%2)==1){
    time1=millis();
    if(abs(time1-time2)<=20)   b=1;
    else                       b=0;
    if(b==0)      a++;
  }
  if((a%2)==0 && (a/2)%2==1)            digitalWrite(LED,HIGH);
  if((a%2)==0 && (a/2)%2==0)            digitalWrite(LED,LOW);
}

装置示意图

在这里插入图片描述

arduino中,按键的消抖动是为了消除电路中干扰和抖动现象而采取的措施。当按下按键时,由于机械结构以及电流的原因,会产生瞬间的抖动,导致按键信号多次变化,无法准确判断按键的真实状态。为了解决这个问题,可以采用以下方法来消除按键的抖动。 第一种方法是通过延时计数来消除抖动。当按键按下时,采用延时方式进行计数,在计数结束后判断按键是否还处于按下状态,如果是,则认为按键有效;如果不是,则认为是抖动信号,无视。这种方法简单易懂,但需要根据实际情况设置延时时间,并存在延时的问题。 第二种方法是通过状态改变来消除抖动。当按键按下时,记录按键的当前状态,并等待一个短暂的时间。在等待期间,如果检测到按键状态发生了改变,即从按下变为释放或从释放变为按下,那么就可以认定为按键的有效触发。这种方法有效地解决了抖动问题,减少了延时。 第三种方法是通过硬件滤波器来消除抖动。在arduino电路中,可以通过添加电容或者电阻元件来实现按键信号的滤波。这样可以有效地把抖动信号滤除,只传递有效信号给arduino。这种方法能够更好地消除抖动,提高按键的可靠性。 以上是几种常用的消除arduino按键抖动的方法,可以根据实际需求和电路条件选择合适的方法进行消抖处理。通过这些方法,能够更好地准确判断按键的状态,提高按键的响应速度和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值