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操做。
相关文章
相关标签/搜索