检测双击,单击,长按的程序
本帖最后由 AlfredLanning 于 2013-10-29 19:17 编辑int pulsepin = 3; //设置3口为脉冲输入
unsigned long result = 0; //用于保存脉冲长度
void setup()
{
pinMode(pulsepin,INPUT);
Serial.begin(9600);
}
void loop()
{
result = pulseIn(pulsepin,HIGH);
if(result) //如果有脉冲就执行中括号内的语句
{
if( result <=200000 ) //本人每次单击的长度为120ms左右,设置为200ms是为了保险起见
{
result = pulseIn(pulsepin,HIGH,180000);//本人每次双击间隔为120ms左右,等待180ms以检测是否是双击
if( result != 0 && result<=120000) //如果在180ms内再次检测到脉冲则为双击
{Serial.println("it is double press");}
else //否则为单击
{Serial.println("it is short press");}
}
else //单击长度超过200ms则为长按
{Serial.println("it is long press");}
}
}
但是这个程序有个缺点,就是只能用来检测按键了,Arduino就不能用来处理其他任务了,还没学会中断,等学会中断再修改。
程序中的三句Serial.println()可以更换成某一具体的程序块,就可以实现在单双击,长按时运行不同的程序 赞一个,好程序~~~ 好主意,好楼主 :loveliness:好东西。留个脚印,以后备查 好文啊。:D 感谢-------
页:
[1]