极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 20133|回复: 5

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

[复制链接]
发表于 2013-10-29 10:37:50 | 显示全部楼层 |阅读模式
本帖最后由 AlfredLanning 于 2013-10-29 19:17 编辑

  1. int pulsepin = 3;                                //  设置3口为脉冲输入                  
  2. unsigned long result = 0;                  //用于保存脉冲长度

  3. void setup()
  4. {
  5.   pinMode(pulsepin,INPUT);
  6.   Serial.begin(9600);
  7. }

  8. void loop()
  9. {
  10.   result = pulseIn(pulsepin,HIGH);
  11.   if(result)                                      //如果有脉冲就执行中括号内的语句
  12.   {  
  13.    if( result <=200000 )              //本人每次单击的长度为120ms左右,设置为200ms是为了保险起见
  14.     {
  15.        result = pulseIn(pulsepin,HIGH,180000);  //本人每次双击间隔为120ms左右,等待180ms以检测是否是双击
  16.        if( result != 0 && result<=120000)           //如果在180ms内再次检测到脉冲则为双击
  17.            {Serial.println("it is double press");}            
  18.        else                                             //否则为单击
  19.            {Serial.println("it is short press");}
  20.     }
  21.     else                                             //单击长度超过200ms则为长按
  22.      {Serial.println("it is long press");}
  23.   }
  24. }
  25.    
复制代码


但是这个程序有个缺点,就是只能用来检测按键了,Arduino就不能用来处理其他任务了,还没学会中断,等学会中断再修改。
程序中的三句Serial.println()可以更换成某一具体的程序块,就可以实现在单双击,长按时运行不同的程序

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2013-10-29 12:13:12 | 显示全部楼层
赞一个,好程序~~~
回复 支持 反对

使用道具 举报

发表于 2013-10-29 12:29:53 来自手机 | 显示全部楼层
好主意,好楼主
回复 支持 反对

使用道具 举报

发表于 2013-10-29 13:59:45 | 显示全部楼层
好东西。留个脚印,以后备查
回复 支持 反对

使用道具 举报

发表于 2013-10-29 17:50:34 | 显示全部楼层
好文啊。
回复 支持 反对

使用道具 举报

发表于 2018-8-7 16:39:40 | 显示全部楼层
感谢-------
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-20 09:57 , Processed in 0.038845 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表