2021年11月22日 星期一

debounce

 boolean state = false;//一開始假設沒有人按這顆按鈕

boolean btn_up = true;//flag旗標:按鈕放開了嗎?true

void setup()//初始化工作,進入loop迴圈

{

  pinMode(13, OUTPUT);

  digitalWrite(13, LOW);

  pinMode(2, INPUT);

  digitalWrite(2, HIGH);

}


void loop()

{//有人按了按鈕LOW 而且 按鈕曾經被放開過,就切換led狀態一次

  if(digitalRead(2) == LOW && btn_up == HIGH)//條件判斷

  {

    state = 1^state;

    digitalWrite(13, state);

    btn_up = false;//轉態完之後,變按鈕還沒有放開,就不會chg led的狀態

  }//按鈕壓下是LOW 被放開是LOW

  else if (digitalRead(2) == HIGH && btn_up == LOW)//還沒有被放開

  {

    btn_up = HIGH;//按鈕被放開了

  }

  delay(10);

}

沒有留言:

張貼留言

algorithm

 #include <iostream> #include <string.h> using namespace std; int main(int argc, char** argv)  { for(int j=2;j<=100;j++)//j...