请教是否有现成的按键组合功能框架?
板子上的按键高级点功能可以区分长按和短按。如果需要组合呢?就像苹果手机长按开源和音量+键等(随便举得例子)。
如果按键稍微多点,自己一点点实现就很麻烦。
但是,这些操作有共性,哪位大侠知道有没有这样的开源按键组合框架来使用?
发一个给你,里面还有教程,告诉你怎么移植和怎么理解。使用的话,会移植就好了,移植的话很简单,配置下底层就可以。
本帖最后由 机器人天空 于 2015-4-5 09:04 编辑
感谢二楼的程序很有用{:lol:}
这是你们的开发板教程吧 骁龙科技工作室 发表于 2015-4-5 08:47
发一个给你,里面还有教程,告诉你怎么移植和怎么理解。使用的话,会移植就好了,移植的话很简单,配置下底 ...
你的处女回复啊,呵呵 机器人天空 发表于 2015-4-5 09:03
感谢二楼的程序很有用
这是你们的开发板教程吧
本教程还未正式发布,敬请期待,多多支持 骁龙科技工作室 发表于 2015-4-5 09:39
本教程还未正式发布,敬请期待,多多支持
{:victory:} 骁龙科技工作室 发表于 2015-4-5 09:39
本教程还未正式发布,敬请期待,多多支持
赞,按键组合,Mark 写得不好的地方请大家多多指教 按键少的话,用一个Bit表示一个键,就可以用Key = GetKey(); sw..(Key){ca... K1+K2:来处理了,多得话可以和电脑键盘一样,用按下,放开来表示,可以用较少的变量来处理,一般的键盘可以处理5个键同时操作,我们完全可以根据自己的需要来做2-3键的 2楼的东东非常好,谢谢分享。 初步看了一下那个文件,写的真好,比我的模块多出一个双击功能,可能是条件编译的原因,程序要长一些 赞,按键组合 骁龙科技工作室 发表于 2015-4-5 08:47
发一个给你,里面还有教程,告诉你怎么移植和怎么理解。使用的话,会移植就好了,移植的话很简单,配置下底 ...
好
还有其他教程吗
谢谢二楼和楼主,写的蛮好的,正在认真看!! 谢谢分享。也在看。 本帖最后由 dmxfeng 于 2015-4-5 20:42 编辑
不错,下来学习下!!!!!谢谢二楼分享 2楼好人,好人一生平安…… 2L请指教,你的代码测试了一下,为什么CreateKey(&Key1,cbOfKey1);放到void Key_GPIO_Config(void)里面不行呢?真奇怪,如果在void Key_GPIO_Config(void)里面创建按键按键内存不能被分配。求指导。
代码很棒。 mark。试试 mark 好分享 下载,谢谢二楼。。。。。 不错,很好,谢谢二楼 二楼很好,谢谢 骁龙科技工作室 发表于 2015-4-5 08:47
发一个给你,里面还有教程,告诉你怎么移植和怎么理解。使用的话,会移植就好了,移植的话很简单,配置下底 ...
请教下, 我刚刚使用了你的按键模块。
不知道是不是BUG, 我修改长按的最短时间为2000MS,按键10MS扫描一次。 骁龙科技工作室 发表于 2015-4-5 08:47
发一个给你,里面还有教程,告诉你怎么移植和怎么理解。使用的话,会移植就好了,移植的话很简单,配置下底 ...
请教下, 我刚刚使用了你的按键模块。
不知道是不是BUG, 我修改长按的最短时间为2000MS,按键10MS扫描一次。
程序里面我判断一个按键 短按, 和长按。
定义#define REACTE REACTE_WHEN_UP
现在 当我一直按着按键, 能进入长按分支。长按结束后抬起按键那一下, 也响应了 短按的分支。。
问题是能不能长按后抬起那下 , 不要被检测成是按键短按? f8023m 发表于 2015-4-7 14:33
2L请指教,你的代码测试了一下,为什么CreateKey(&Key1,cbOfKey1);放到void Key_GPIO_Config(void)里面不行 ...
你把Key1定义为函数里面的局部变量Key_GPIO_Config?这样子是不行的,这个结构体变量是用来存放按键状态的,必须在按键检测的过程中始终保持有效 nuncle 发表于 2015-5-7 22:07
请教下, 我刚刚使用了你的按键模块。
不知道是不是BUG, 我修改长按的最短时间为2000MS,按键10MS扫 ...
我等下修改下这个bug,我在编写的时候只想到了检测每一种状态的检测,没有想到他们之间在实际使用中是互斥的 骁龙科技工作室 发表于 2015-5-10 10:40
我等下修改下这个bug,我在编写的时候只想到了检测每一种状态的检测,没有想到他们之间在实际使用中是互 ...
好的, 还有个问题。
这个版本的是不是会发生这样的现象?多次快速的单击按钮,最后会判断出来一次长按。
我现在程序里面 获取短按后,
都调用GetKeyElement(k1,ELEMENT_LONG_PRESS,CLEAR);//清除长按
GetKeyElement(k2,ELEMENT_LONG_PRESS,CLEAR);//清除长按
来清除下, 就不会误判有长按发生。
这个你看下 是不是要改呢? mark一下,等完整版 自古二楼出真相。 以前单按键的有了那个3行的按键处理非常方便,多按键的研究下2楼的,看看好不好用。 nuncle 发表于 2015-5-10 12:50
好的, 还有个问题。
这个版本的是不是会发生这样的现象?多次快速的单击按钮,最后会判断出来一次长按 ...
新的,修改好BUG后在此。
不过新的程序中没有使用手册,只有2楼才有 骁龙科技工作室 发表于 2015-5-11 15:32
新的,修改好BUG后在此。
好的, 非常感谢。。 等下回去了 试试。 骁龙科技工作室 发表于 2015-5-11 15:33
不过新的程序中没有使用手册,只有2楼才有
对于你的程序请教一个问题:
若要把两个按键组合起来使用该如何实现?
比如
KEY_1短按切换LED1——LED3,长按则快速切换,双击BUZZER1响起
KEY_2短按切换LED4——LED6,长按则快速切换,双击BUZZER2响起
以上这些都可以实现。
但下面的按键功能如何实现?
当KEY_1和KEY_2同时按下时,关闭BUZZER1
当KEY_1和KEY_2再次同时按下时,关闭BUZZER2
sos9616 发表于 2015-5-15 09:46
对于你的程序请教一个问题:
若要把两个按键组合起来使用该如何实现?
这个是应用层的问题了,你就加个判断就好啦,if(GetKeyXXX>0&&GetKeyYYY>0).....然后加多一个变量。 骁龙科技工作室 发表于 2015-5-11 15:32
新的,修改好BUG后在此。
请问我更新了修改后的驱动,发现长按时间无法响应了?有哪些地方需要修改呢 谢谢2楼,代码很棒,key代码框架写的真好! 自己用状态机写一个,什么长按短按单击双击消抖组合,甚至是旋转编码器,一个搞定,一劳永逸 看了一下2L的文档,也是基于状态机的,不错,只是状态有点少 hackerboygn 发表于 2015-10-8 15:02
看了一下2L的文档,也是基于状态机的,不错,只是状态有点少
大虾能指点一下你说的状态机不,感觉还厉害, xurenhui 发表于 2015-10-19 10:02
大虾能指点一下你说的状态机不,感觉还厉害,
请自行谷歌有限状态机(finite state machine),在FPGA里用得很普遍。
对于按键的处理,我当时参考了这个
http://www.mathertel.de/Arduino/FiniteStateMachine.aspx
http://www.mathertel.de/Arduino/OneButtonLibrary.aspx hackerboygn 发表于 2015-10-19 11:18
请自行谷歌有限状态机(finite state machine),在FPGA里用得很普遍。
对于按键的处理,我当时参考了这 ...
谢谢,大虾 骁龙科技工作室 发表于 2015-4-5 08:47
发一个给你,里面还有教程,告诉你怎么移植和怎么理解。使用的话,会移植就好了,移植的话很简单,配置下底 ...
你好!请问下你那个程序在编译的时候出现很多错误,应该打不开stm32f10x。h文件报错。cannot open sourse input file stm32f10x.h:no such file or directory 这个怎么解决
页:
[1]