克服按鈕彈跳



材料
  • Arduino
  • LED
  • 10KΩ
  • 按鈕



使用按鈕設計一個開關系統,每按一次按鈕就改變LED燈的狀態,程式的邏輯很簡單,利用偵測PIN 2的值,如果按下按鈕時PIN2將會讀到HIGH,亦即,每讀到一次HIGH代表使用者按下了按鈕,此時便可以改變LED的開關狀態。

試著多按幾次按鈕,會發現,執行的結果與我們預期的似乎不一樣,這究竟是甚麼原因呢?

/*  

*/
const byte buttonPin=2 ;
const byte ledPin = 13 ;
int ledState = LOW ;

void setup() {
  // put your setup code here, to run once:
    pinMode(buttonPin,INPUT);
    pinMode(ledPin,OUTPUT);
    digitalWrite(ledPin,ledState) ;
}

void loop() {
  // put your main code here, to run repeatedly:

   int reading = digitalRead(buttonPin) ;

   if( reading == HIGH) { //偵測到使用者按下按鈕,改變LED狀態
      ledState = !ledState ;
      
    }
    digitalWrite(ledPin,ledState) ;

}