所產生的結果就是明明按鈕指有被按一下,但 Arduino 確認為按了很多下
這不是 Arduino 的問題,而是所有的微控制器因為其感測速度太快而產生
解決機械彈跳最簡單的辦法就是使用 debounce 函式庫
直接上程式碼
#include "Bounce.h"
#define Btn 2
Bounce bouncer = Bounce( Btn,40 ); // 若將 40 這個數字改大 debounce 效果會更好
// 但有可能造成開關變的不是很靈敏,建議設置 30~50 之間
int i = 0;
void setup() {
Serial.begin(9600);
pinMode(Btn,INPUT); //按鈕預設為低位觸發,也就是按下按鈕後讀值為 LOW 電壓
}
void loop() {
if ( bouncer.update() && !bouncer.read()){
i++;
Serial.println(i);
}
}
我將定期推出程式語言的新手教學影片