这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » Arduino nano学习0x06——按键消抖

共2条 1/1 1 跳转至

Arduino nano学习0x06——按键消抖

高工
2017-06-22 23:28:44     打赏

一、背景

通常我们用到的机械按键,在按下时会有机械抖动,因此在判断按键时需要一定延时进行消抖。

二、硬件

D13接LED指示灯,D4接按键输入,默认接10K上拉电阻

三、程序

const int buttonPin = 4;    //输入按键引脚
const int ledPin = 13;      //LED引脚
int ledState = HIGH;         // 指示灯的当前状态
int buttonState;             // 按键当前状态
int lastButtonState = LOW;   // 按键之前状态  
unsigned long lastDebounceTime = 0;  // 上一次LED改变时的时间
unsigned long debounceDelay = 50;    // 去抖时间

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);

  digitalWrite(ledPin, ledState);//灯的设定状态
}

void loop() {
  //当前开关状态
  int reading = digitalRead(buttonPin);
  if (reading != lastButtonState) {//按键按下
    lastDebounceTime = millis();//复位去抖计时器  }

  if ((millis() - lastDebounceTime) > debounceDelay) {//等待延时
      if (reading != buttonState) {//按键任然按下
          buttonState = reading;
      //如果按键按下,翻转LED灯
      if (buttonState == LOW) {
        ledState = !ledState;
      }
    }
  }

  // 设置LED
  digitalWrite(ledPin, ledState);

  // 保存之前按键状态值
   lastButtonState = reading;
} 




四、效果

按键按下时LED翻转



专家
2017-06-23 08:26:01     打赏
2楼
谢谢分享源码。

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]