【Arduino基礎】按鍵控制LED燈亮滅實驗

實驗現象
當按鍵按下時,LED亮,按鍵沒有按下時,LED不亮。
實驗說明
1.先完成按鍵功能
2.再完成小燈點亮功能
3.二者電路務必分開,最後實現邏輯功能。
理論學習
按鍵檢測原理:通過把Arduino的數字IO設置爲輸入狀態來監控按鍵是否按下,當按鍵未按下的時候因爲有上拉電阻的存在,讀到的電平爲HIGH,當按鍵按下時候因爲按鍵引腳接地,所以讀回來的電平爲LOW,由此判斷按鍵是否按下。
按鍵去抖動原理:因爲人手的機械動作使按鍵按下時候會產生大概20ms左右的按鍵抖動,如果Arduino在這20ms內去檢測IO口的電平很可能會檢測出來不穩定的信號。因此,在檢測到低電平後延遲20ms再檢測可以起到軟件去抖動的作用。
鬆手檢測原理:所謂的鬆手檢測就是程序無線循環等待按鍵鬆開,即讓程序不停的去檢測IO狀態,如果恢復了HIGH就跳出循環。
實驗準備
arduino主板-1
麪包板-1
數據線-1
Led燈-1
220Ω電阻-1
按鍵-1
按鍵帽-1(可省略)
跳線若干
連接電路
接線說明
按鍵一腳接GND,一腳接數字引腳2,無需電阻; LED燈長腳接數字引腳5,需要連220Ω的電阻,短腳接GND。
實驗代碼

#define LED 5
#define KEY 2

int KEY_NUM = 0;      //按鍵鍵值存放變量

void setup()
{
  pinMode(LED,OUTPUT);      //定義LED爲輸出引腳
  pinMode(KEY,INPUT_PULLUP);    //定義KEY爲帶上拉輸入引腳
}

void loop()
{   
 ScanKey();        //按鍵掃描程序,當按鍵按下時候,該子程序會修改KEY_NUM的值
 if(KEY_NUM == 1)      //是否按鍵按下,如果<span style="font-family:Arial, Helvetica, sans-serif;">ScanKey函數掃描到按鍵就會設置KEY_NUM值爲1</span>
  {   
    digitalWrite(LED,!digitalRead(LED));    //LED的狀態翻轉
  }
}

void ScanKey()            //按鍵掃描程序
{
  KEY_NUM = 0;          //清空變量
  if(digitalRead(KEY) == LOW)     //有按鍵按下
  {
    delay(20);        //延時去抖動
    if(digitalRead(KEY) == LOW)   //有按鍵按下
    {
      KEY_NUM = 1;      //變量設置爲1
      while(digitalRead(KEY) == LOW); //等待按鍵鬆手
    }
  }
}

實現效果
在這裏插入圖片描述
在這裏插入圖片描述
相關文章
【Arduino基礎】LED燈閃爍實驗

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章