|
|

楼主 |
发表于 2016-7-26 09:44:59
|
显示全部楼层
最后的修改
int buttonPin=9;//按钮连接到9号引脚
int ledPin=7; //LED连接到7号引脚
int ledState= LOW; //led的初始状态
int buttonState=LOW; //记录button当前的状态
int lastButtonState=LOW;//记录button前一个状态
long lastDebounceTime=0;
long debounceDelay=50;//去除抖动时间
void setup() {
pinMode(buttonPin,INPUT);
pinMode(ledPin,OUTPUT);
digitalWrite(ledPin,ledState);//设置led的初始状态
}
void loop() {
int reading=digitalRead(buttonPin);//读取buttonPin的状态存在reading
//一旦检测到数据发生变化,记录当前的时间
if(reading!=lastButtonState){
lastDebounceTime=millis();
}
//等待50ms,再进行一次判断,是否和当前button状态相同
//如果当前状态不同,改变button状态
//同时,如果button状态为高(也就是被按下),那么就改变led的状态
if((millis()-lastDebounceTime)>debounceDelay){
if(reading!=buttonState){
buttonState=reading;
//lastButtonState=reading;为什么写在这里不行?一定要写在最后
if(buttonState==HIGH){
ledState=!ledState;
}
}
}
digitalWrite(ledPin,ledState);
lastButtonState=reading;
} |
|