|
|

楼主 |
发表于 2014-2-15 20:55:27
|
显示全部楼层
本帖最后由 FISHENDER 于 2014-2-15 21:08 编辑
zjhyhky 发表于 2014-2-15 19:51 
检测到按下后要延时1秒,不然在你按下期间早就检测到好多次了
我的解决方案是这样的
int num=0;
int a=0;
int b=0;
void setup ()
{
pinMode(4,INPUT); //将4号数字口设置为输入状态,13号数字口设置为输出状态
pinMode(13,OUTPUT);
}
void loop()
{
int n =digitalRead(4); //创建一个变量n,将4号数字口的状态采集出来赋值给他。
if(n==HIGH) a++; //创建按下状态记录变量
if(n==LOW) b++; //创建弹起状态记录变量
if (a*b!=0) //判断按键是否为按下后又弹起,如果是执行下面的语句,不是则跳过。
{
num++;
delay(140);
if(num>10)
{
for(int i=0;;i++)
{
delay(50);
digitalWrite(13,HIGH);
delay(50);
digitalWrite(13,LOW);
}
num=0;
}
a=0;
b=0;
}
}
这样过后,的确可以比较准确的做到我预想的事,但是同时,如果你按键过慢,按不到规定的次数(比如5、6),就会提前点亮,但是按得快一点就按照规定的次数点亮,不知道为什么。 |
|