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); } }
效果