打印
[STM32]

360度旋转按钮 按键检测 有没有好的方法

[复制链接]
5474|37
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
旋转按钮是 八档九位旋转按钮,中间的是公共端,旋钮无论怎么旋转,永远只导通一个,

按键检测是 :低电平检测 (公共端接地)

实现目的:顺时针为增加方向,逆时针为减少方向,每旋转一次数值加一或减一:

目前所想到的实现的方法:做差值比较:

现在所出现的问题是:按键采集旋转的速度慢的时候,处理正常,,当旋转速度快的时候,按键值采集不到,现在按键采集的速度10ms采集一次,20ms确定这个按键接触,,当把按键差值出现的可能写在程序,又出现正转和反转的差值数据一样:想问大家还有其他 的好想法吗,提供一下

4~LJDEF@BZL`NH[ADI3{{Y2.png (23.58 KB )

旋转按钮

旋转按钮

相关帖子

沙发
dirtwillfly| | 2017-4-13 13:55 | 只看该作者
没必要那么复杂。找一个像万用表上中间的旋钮开关就ok了

使用特权

评论回复
板凳
ayb_ice| | 2017-4-13 14:00 | 只看该作者
那就是检测慢了,加快速度,或中断触发检测

使用特权

评论回复
地板
mcu5i51| | 2017-4-13 14:02 | 只看该作者
并联为3-4个开关,之后用相位方式分别正反和次数,中断最好;
思路: 以3相说明,1,2,3对应并联后的3个输入中断;
进入2号中断,比较一个变量的值,为0时是首次运行,改变量为2;
进入3号中断,比较这个变量(0,1,2,3),值为1为减数,值为2为加数,为0不处理;并更新变量为中断号3;

这样的应用用正交方式的开关些

使用特权

评论回复
5
abcxuyangyang|  楼主 | 2017-4-13 14:17 | 只看该作者
ayb_ice 发表于 2017-4-13 14:00
那就是检测慢了,加快速度,或中断触发检测

现在定时器中断检测,10ms一次, 20ms确定按键

使用特权

评论回复
6
abcxuyangyang|  楼主 | 2017-4-13 14:17 | 只看该作者
dirtwillfly 发表于 2017-4-13 13:55
没必要那么复杂。找一个像万用表上中间的旋钮开关就ok了

功能像万用表,不过,要配合LED的显示

使用特权

评论回复
7
abcxuyangyang|  楼主 | 2017-4-13 14:20 | 只看该作者
mcu5i51 发表于 2017-4-13 14:02
并联为3-4个开关,之后用相位方式分别正反和次数,中断最好;
思路: 以3相说明,1,2,3对应并联后的3个输入 ...

方法可以,不过把八档变成四挡就相当于有四挡无用,和现在快速扫描,按键值检测不到,效果一样了

使用特权

评论回复
8
dirtwillfly| | 2017-4-13 14:25 | 只看该作者
abcxuyangyang 发表于 2017-4-13 14:17
功能像万用表,不过,要配合LED的显示

加上led就可以啊

使用特权

评论回复
9
mcu5i51| | 2017-4-13 14:26 | 只看该作者
abcxuyangyang 发表于 2017-4-13 14:20
方法可以,不过把八档变成四挡就相当于有四挡无用,和现在快速扫描,按键值检测不到,效果一样了 ...

看看鼠标的滚轮;
数控机床之类的使用正交编码的方式,一圈可以有400-2000点,可以正常测试几千的转速,并得到确切的角度;
仔细想想

使用特权

评论回复
10
huarana| | 2017-4-13 15:13 | 只看该作者
你的键选择错误了。

这种的是档位开关,本来就是给慢速旋转选择档位用的。

你的需求的话需要用  旋转编码器 这种钮字。 就像示波器上的旋钮一样。

引脚数少很多,可以实现你要的功能,程序也简单。

使用特权

评论回复
11
abcxuyangyang|  楼主 | 2017-4-13 15:49 | 只看该作者
huarana 发表于 2017-4-13 15:13
你的键选择错误了。

这种的是档位开关,本来就是给慢速旋转选择档位用的。

谢谢指点,这个旋转按钮目前确实当做档位开关,解决方法想了好久,都没有想到合适的方法

使用特权

评论回复
12
abcxuyangyang|  楼主 | 2017-4-13 15:51 | 只看该作者

主要是想把旋钮按键当做档位开关

使用特权

评论回复
13
dirtwillfly| | 2017-4-13 16:05 | 只看该作者
abcxuyangyang 发表于 2017-4-13 15:51
主要是想把旋钮按键当做档位开关

想不出你的具体需求

使用特权

评论回复
14
pywmiss| | 2017-4-13 16:16 | 只看该作者
在淘宝或者百度搜索  旋转编码器
我最近刚用过...搞定了

使用特权

评论回复
15
abcxuyangyang|  楼主 | 2017-4-13 16:43 | 只看该作者
dirtwillfly 发表于 2017-4-13 16:05
想不出你的具体需求

实质就是按键检测做加减法,只是这个旋钮可以720度旋转

使用特权

评论回复
16
xmar| | 2017-4-13 17:06 | 只看该作者
参见14楼:


使用特权

评论回复
17
wangyy608| | 2017-4-13 17:16 | 只看该作者
速度,旋转的过程中按键接触的时间可能非常短。
如果只是旋转加减还是用现成的器件,编码器之类

使用特权

评论回复
18
huangqi412| | 2017-4-13 18:24 | 只看该作者
到底是档位开关 还是  编码器

使用特权

评论回复
19
abcxuyangyang|  楼主 | 2017-4-13 19:56 | 只看该作者
pywmiss 发表于 2017-4-13 16:16
在淘宝或者百度搜索  旋转编码器
我最近刚用过...搞定了

刚根据你的提议,搜了下,旋转编码器把档位的最大值 位置 已经确定了,要么最左边为最大值,要么最右边为最大值,感觉没有很好的灵活性,因为在旋转的时候,不可能出现中间位置为最大值

使用特权

评论回复
20
abcxuyangyang|  楼主 | 2017-4-13 20:08 | 只看该作者
huangqi412 发表于 2017-4-13 18:24
到底是档位开关 还是  编码器

无限旋转旋钮,实在就是根据按键采集,实现数值的自加或自减比如,循环,比如 自加 0-1-2-3-4-3-2-1-0

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

34

帖子

0

粉丝