AlfredLanning 发表于 2013-10-29 10:37:50

检测双击,单击,长按的程序

本帖最后由 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()可以更换成某一具体的程序块,就可以实现在单双击,长按时运行不同的程序

shenhaiyu 发表于 2013-10-29 12:13:12

赞一个,好程序~~~

maxims 发表于 2013-10-29 12:29:53

好主意,好楼主

迷你强 发表于 2013-10-29 13:59:45

:loveliness:好东西。留个脚印,以后备查

Cupid 发表于 2013-10-29 17:50:34

好文啊。:D

鑫期天 发表于 2018-8-7 16:39:40

感谢-------
页: [1]
查看完整版本: 检测双击,单击,长按的程序