LCD板子上有4个按键,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。按键消抖目的:按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。键抖动会引起一次按键被误读多次。为确保CPU对键的一次闭合仅作一次处理,必须去除键抖动。
测试使用GP15,LED使用GP6
程序
const int buttonPin = 15;
const int ledPin = 6;
int buttonState = 0;
int flag=0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
}
void loop() {
buttonState = digitalRead(buttonPin);
if(buttonState==LOW)
{
delay(20);
buttonState = digitalRead(buttonPin);
if(buttonState==LOW)
{
flag=flag==0?1:0;
while(digitalRead(buttonPin)==0);
}
}
if (flag == 1)
{
digitalWrite(ledPin, HIGH);
}
else
{
digitalWrite(ledPin, LOW);
}
}效果

我要赚赏金
