Arduino 按鍵實驗

1、功能

實現按鍵控制LED亮滅。按下點亮,再次按下熄滅。css

2、原理圖

這裏寫圖片描述

3、代碼

int ButtonState;
int ButtonLastState;
int ButtonCounter;

void setup() {
  // put your setup code here, to run once:
  pinMode(13,OUTPUT);
  pinMode(11,INPUT_PULLUP);
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  ButtonState = digitalRead(11);

  if(ButtonState != ButtonLastState)
  {
    if(ButtonState)
    {
        Serial.println("on");
        ButtonCounter++;
    }
    else
    {
      Serial.println("off");  
    }
    delay(100);
  }

  ButtonLastState = ButtonState;
  if(ButtonCounter%2)
  {
    //Serial.println(ButtonCounter);
    digitalWrite(13,1);  
  }
  else
  {
    digitalWrite(13,0);  
  }
}

4、解析

  • 一、開關經過一個數字接口鏈接到 arduino,端口配置爲上拉輸入。在默認狀況下,端口電平爲高,按鍵按下時,端口被拉低。
  • 二、理想狀況下,一次按鍵對應着一個降低沿,一段低電平,一個上升沿。程序經過ButtonStateButtonLastState兩個標誌位來判斷電平狀況,經過這兩個標誌位實現了降低沿和上升沿進入第一個判斷語句,即if(ButtonLastState != ButtonState),只不過降低沿和上升沿所處理的操做不一樣,降低沿不作處理,僅打印一條語句,上升沿時候則表明按鍵被按下而且已經放開了,則對按鍵次數進行加一。
  • 三、要實現,按下點亮,再次按下熄滅,只須要對按鍵次數進行模2操做。
相關文章
相關標籤/搜索