弘毅 发表于 2013-3-11 12:05
硬件消抖,也就是并联电容。
只能硬件消抖了? 手里没有电容,不知效果是否好。
我模仿试验教程做了个按钮控制流水灯方向的例子,也有这个问题,代码如下,也不复杂,按钮常不灵。
[pre lang="arduino" line="1" file="button_control_led_seq.ino"]
//按一下按钮,灯就会改变方向
boolean order = false;
int time=130;// 流水灯的间隔时间
void setup ()
{
for (int i=4; i<=7; i++) //4 5 6 7设置为流水灯
{
pinMode(i,OUTPUT);
}
attachInterrupt(0, stateChange, FALLING);//D2做中断,电压下降触发,也就是放开按键时
}
void flashPin(int x)
{
digitalWrite(x,HIGH);
delay(time);
digitalWrite(x,LOW);
delay(time);
}
void loop()
{
static int currentPin = 7;//最初由7号引脚开始闪
flashPin(currentPin);
/*
order为true时减3余4,相当于增1个,7增1返回4,表示4->5->6->7->4
order为false时减1余4,相当于降1个,4降1返回7,表示7->6->5->4->7
*/
currentPin = ((currentPin - (order?3:1))%4+4);
}
//中断处理,触发后反转顺序
void stateChange()
{
order=!order;
}[/code]
|