|
本帖最后由 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()可以更换成某一具体的程序块,就可以实现在单双击,长按时运行不同的程序 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|