极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14866|回复: 3

求助,识别按键双击、长按的功能实现

[复制链接]
发表于 2014-12-16 16:29:12 | 显示全部楼层 |阅读模式
各位大大好
想实现检测按键双击、长按实现触发的功能
用led闪烁做比方
采用4*4矩阵键盘,用的key的库
按一下1,led闪烁3下
按两下1,led闪烁10下
长按1,led一直闪烁
求检测按键的方法,如何识别按键是双击还是长按捏~
小弟感激不尽~
回复

使用道具 举报

发表于 2014-12-16 19:46:54 | 显示全部楼层
你已经描述的够清楚了,可以采用以下方法:
1、是否有按键
2、延迟是否释放了
3、是否又有按键
4,有的是二次按键,没有的是一次按键
如果2没有释放,判断为长按
间隔时间,可以试验定(通常1S),长按的时间可以自己确定(通常2S)。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-17 11:38:10 | 显示全部楼层
林定祥 发表于 2014-12-16 19:46
你已经描述的够清楚了,可以采用以下方法:
1、是否有按键
2、延迟是否释放了

thk~谢谢这位大哥的回复
回复 支持 反对

使用道具 举报

发表于 2014-12-29 14:04:26 | 显示全部楼层
本帖最后由 tihnika 于 2015-2-4 20:31 编辑

我实现成功了。双击ok了led10
  1. //  
  2.   int a = 0 ;
  3. int w = 0 ;
  4. int p = 0 ;
  5. int buttonState = 0;        
  6. void setup() {
  7.     Serial.begin(9600);
  8.   pinMode(7, INPUT);
  9.     pinMode(10,OUTPUT);
  10. }
  11. void loop() {
  12.   buttonState = digitalRead(7);
  13.    delay(100);
  14.     if (buttonState == 1){
  15.       if (p == 1) {
  16.          w = w + 1;
  17.           delay(2);
  18.    if (w == 8) {
  19.     w=0;
  20.     p=0;
  21.    }
  22.     }
  23.     }  
  24.     if (buttonState == 0){
  25.        if (w == 0) {
  26.     p=1;
  27.     }
  28.         if (w > 0) {
  29.            digitalWrite(10, HIGH);
  30.            delay(1000);
  31.            digitalWrite(10, LOW);
  32.     w=0;
  33.     p=0;
  34.    }
  35.    }
  36. }
复制代码


本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-17 04:10 , Processed in 0.039514 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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