实现按键控制LED亮灭。按下点亮,再次按下熄灭。css
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);
}
}
ButtonState
和ButtonLastState
两个标志位来判断电平状况,经过这两个标志位实现了降低沿和上升沿进入第一个判断语句,即if(ButtonLastState != ButtonState)
,只不过降低沿和上升沿所处理的操做不一样,降低沿不作处理,仅打印一条语句,上升沿时候则表明按键被按下而且已经放开了,则对按键次数进行加一。