Arduino的按鈕控制程序


按鈕的程序設計:

  單片機程序的設計難題在於,對按鈕開關的判斷,初學者往往會簡單認為檢測到電流即為按鈕按下,其實不然,程序的一段代碼的執行時間是非常短的,而開關的機械結構,使得開關在按下去,在按鈕完全即將接觸到完全接觸之間,電平是不穩定的,代碼在檢測的時候可能會檢測到多個不同的數據,從而影響判斷,此外,單片機的程序除了要檢測開關,也會有其他的任務需要執行,所以程序是在主程序和開關檢測這一塊不斷的進行切換的。有點像操作系統的分時系統。

  下面是對按鈕的防抖的方法,分為硬件防抖和軟件防抖,這里介紹的是軟件防抖。

if(value == 0) //一旦檢測到鍵值

{

Delay(); //延時20ms,有效濾除按鍵的抖動

if(value == 0) //再次確定鍵值是否有效

{

…… //執行相應處理

}

}

 

詳見於   https://blog.csdn.net/shenlei314/article/details/47785411

 

下面的的這個是我老師給的代碼

boolean checkSwitchState(int pin)

{

int nowState; int count = 0;

nowState = digitalRead(pin); //保存開關的狀態 

while(nowState == HIGH)

{

  delay(1);

  nowState = digitalRead(pin);

  count++;

  if(count == 10)

return nowState;

}

 return LOW;

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM