搜索
bottom↓
回复: 10

怎么实现一个多功能按键和多状态指示?

[复制链接]

出0入0汤圆

发表于 2013-6-14 10:59:18 | 显示全部楼层 |阅读模式
    项目中要求1个按键具备4种功能,3秒,5秒,7秒,15秒(这个时间是可以修改的),不同功能要求LED灯以不同的方式闪烁,现在是用按键的按下和弹起中断计算按键时间来做的。但是这样做操作很不友好,只有等松开按键LED才会按要求闪烁,会给人很多误解。项目要求的结果就是按键按下时间达到触发某种功能的时候LED就开始按预定的方式闪烁,然后用户就可以松开手指了。但是因为有4个状态,所以假如要实现按15秒的功能,但是到了5秒的时候可能LED就会开始按5S的功能闪烁了,这时候用户可能就会松开手指了,LED就误导了用户。
    说了这么多废话,其实要求就是:怎么在实现15S的功能之前,不让他触发3,5,7S的功能(LED不乱闪烁)。可能是思维定势了,希望大家给点建议。

出0入0汤圆

发表于 2013-6-14 11:03:14 | 显示全部楼层
定时器里面计数,LED继续走

出0入0汤圆

 楼主| 发表于 2013-6-14 11:07:21 | 显示全部楼层
little_Monkey 发表于 2013-6-14 11:03
定时器里面计数,LED继续走

这样子的话LED闪完3S状态,接着闪5S,接着7S,不明白的用户直接就说你的东西有问题了。这个老板就不让过,更不要说客户了。

出0入0汤圆

发表于 2013-6-14 11:12:15 | 显示全部楼层
不能等按键弹起以后再查看按了多久吗!!

出0入0汤圆

 楼主| 发表于 2013-6-14 11:16:57 | 显示全部楼层
little_Monkey 发表于 2013-6-14 11:12
不能等按键弹起以后再查看按了多久吗!!

不能,那样用户就像傻瓜一样了,手指不松LED就无变化,按一小时也是那样。我现在想如果这样做不行的话,就搞什么双击,三击什么的了。

出0入264汤圆

发表于 2013-6-14 11:28:46 来自手机 | 显示全部楼层
换思路吧,你的要求是没有办法实现的。一个按键四种状态,用短按,长按,连按,和双击就好了。

出0入0汤圆

 楼主| 发表于 2013-6-14 11:33:32 | 显示全部楼层
mcu_lover 发表于 2013-6-14 11:28
换思路吧,你的要求是没有办法实现的。一个按键四种状态,用短按,长按,连按,和双击就好了。 ...

恩,基本上是的,我的案子中短按是无效的,琢磨下换思路了。

出870入263汤圆

发表于 2013-6-14 18:15:39 | 显示全部楼层
mcu_lover 发表于 2013-6-14 11:28
换思路吧,你的要求是没有办法实现的。一个按键四种状态,用短按,长按,连按,和双击就好了。 ...

很好实现的,参考这个文章,我就不重发内容了:
http://www.cnblogs.com/embeddedtech/archive/2012/05/26/2519160.html

出870入263汤圆

发表于 2013-6-14 18:19:52 | 显示全部楼层
你只要在u8_t KeyProc(u8_t kindex, u8_t ksta, u8_t ktick)函数里处理KEY_STA_KEEP事件,然后根据ktick来进行你需要的时间处理,如果你认为8位ktick不够用,自己修改源代码为16位或者32位吧。

出0入0汤圆

发表于 2013-6-14 18:25:59 来自手机 | 显示全部楼层
计时器呢

出0入0汤圆

 楼主| 发表于 2013-6-14 18:38:15 | 显示全部楼层
armstrong 发表于 2013-6-14 18:19
你只要在u8_t KeyProc(u8_t kindex, u8_t ksta, u8_t ktick)函数里处理KEY_STA_KEEP事件,然后根据ktick来 ...

我大概看了下。但是问题不一样。我指的是当我处理长按15S之前会出现前面的3个状态,LED状态指示灯,肯定会有闪烁,也就是说在按ED按15S方式闪烁之前,会先按3S的闪烁,再5S的闪烁,再7S的闪烁,最后才会出现按15S的闪烁,当用户看到这情况时他不会像那么多,他就会认为你的设备有问题。

按键时间好算,但是要达到15S的长按状态就必须经过3S,5S,7S的状态。LED就会以几种方式闪烁。不知道我有没有说明白。现在程序改了,短按,长按,双击,三击。效果还行。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-11 14:51

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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