/*
程序:按钮演示程序
hold, pressed, releasedsingle, double and triple click公众号:孤独的二进制注意事项:按钮防抖动使用简单粗暴的delay方式实际应用时,可以换成millis的方式
*/
#define BTNPIN 2//按钮连接到数字端口2
#define DEBOUNCE 120 //按钮防止抖动时间
byte btnStatusCurrent = LOW; //当前按钮状态
byte btnStatusPrevious = LOW;//之前按钮状态
void setup() {
Serial.begin(9600);
pinMode(BTNPIN, INPUT); //没按LOW按下去HIGH
}
void loop() {
btnStatusCurrent = digitalRead(BTNPIN); //获取当前按钮
// 按钮被一直按下
// if (btnStatusCurrent == HIGH) {
// Serial.println("Hold");
// }
// 按钮按下去的瞬间
// 当前按钮状态是HIGH,之前按钮状态是LOW
if ((btnStatusCurrent == HIGH) && (btnStatusPrevious == LOW)) {
Serial.println("Pressed");
delay(DEBOUNCE);
}
// 按钮松手的瞬间
// 当前按钮状态是LOW,之前按钮状态是HIGH
if((btnStatusCurrent == LOW)&&(btnStatusPrevious== HIGH)){
Serial.println("Released");
delay(DEBOUNCE);
}
//此循环结束,"当前按钮状态”将作为下次循环的"之前按钮状态
btnStatusPrevious =btnStatusCurrent;
}