发新帖我要提问
12
返回列表
打印
[STM32]

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

[复制链接]
楼主: abcxuyangyang
手机看帖
扫描二维码
随时随地手机跟帖
21
旋转检测我就想到了滑动变阻器

使用特权

评论回复
22
qinhecat1| | 2017-4-13 22:32 | 只看该作者
用360度旋转的旋转编码器就行,根据2个输出端的电平相位变化不同来判断选择方向,所有的音响音量控制,示波器参数调节都是那种玩意,量大又便宜,现成的源码网上也多的是。

使用特权

评论回复
23
王紫豪| | 2017-4-13 23:35 | 只看该作者


这个行吗?

或者直接用个单圈电位器就行了,adc采样。。

使用特权

评论回复
24
songchenping| | 2017-4-14 08:19 | 只看该作者
你指的速度快有多快啊。每次是扫描全部按键值还是扫描部分按键值啊?

使用特权

评论回复
25
longquanshuang| | 2017-4-14 08:32 | 只看该作者
LZ一定在逗你们玩

使用特权

评论回复
26
NE5532| | 2017-4-14 08:46 | 只看该作者
电位器,编码器,触摸按钮都可以实现,楼主先选下按钮类型。

使用特权

评论回复
27
rogerjw| | 2017-4-14 08:58 | 只看该作者
按键本身应该是没问题的,主要问题应该是出现在程序处理;
你可先用led做指示,识别到当前key消抖后马上显示,是马上显示。然后转一圈试看看是否全亮。
做成key与led一对一的形式,先确定是否可以(顺便抓下快速旋转每个档位的低电平维持多长时间)。如果可以,说明你程序上处理有问题。
正常消抖30-50ms都没问题。

使用特权

评论回复
28
Ketose| | 2017-4-14 09:42 | 只看该作者
使用外部中断不可以吗?

使用特权

评论回复
29
masmin| | 2017-4-14 09:55 | 只看该作者
看看你吗当年学习的锁存器电路就知道怎样搞了。

使用特权

评论回复
30
pywmiss| | 2017-4-14 12:07 | 只看该作者
abcxuyangyang 发表于 2017-4-13 20:08
无限旋转旋钮,实在就是根据按键采集,实现数值的自加或自减比如,循环,比如 自加 0-1-2-3-4-3-2-1-0 ...

你是想自己做吗?
如果只是研究玩玩..那可以
如果是用于产品上,我认为这样是不可取的..自制的不够稳定吧,尺寸也不会太小...

使用特权

评论回复
31
abcxuyangyang|  楼主 | 2017-4-14 12:21 | 只看该作者
pywmiss 发表于 2017-4-14 12:07
你是想自己做吗?
如果只是研究玩玩..那可以
如果是用于产品上,我认为这样是不可取的..自制的不够稳定吧, ...

用于产品上,按钮如图所示

0((3[AARBJYT)V`AMV(NJUF.png (159.22 KB )

旋转按钮

旋转按钮

使用特权

评论回复
32
abcxuyangyang|  楼主 | 2017-4-14 12:22 | 只看该作者
Ketose 发表于 2017-4-14 09:42
使用外部中断不可以吗?

也想到了外部中断,担心外部干扰明显,误操作

使用特权

评论回复
33
abcxuyangyang|  楼主 | 2017-4-14 12:23 | 只看该作者

使用特权

评论回复
34
abcxuyangyang|  楼主 | 2017-4-14 12:28 | 只看该作者
rogerjw 发表于 2017-4-14 08:58
按键本身应该是没问题的,主要问题应该是出现在程序处理;
你可先用led做指示,识别到当前key消抖后马上显 ...

按键扫描10ms一次,思路是:做差值比较;此时状态数值减去上一次数值,大于0加一,正常旋转速度,按键检测正常。但是考虑到产品使用的环境;扫描过快,按键值扫描不到,就无法操作,

使用特权

评论回复
35
rogerjw| | 2017-4-14 13:26 | 只看该作者
abcxuyangyang 发表于 2017-4-14 12:28
按键扫描10ms一次,思路是:做差值比较;此时状态数值减去上一次数值,大于0加一,正常旋转速度,按键检 ...

每个key都对应相应值,比如key1是=key0+1,key2=key0+2……key5=key5=key0+5,这样子的话就能保证你最终落在那个位置值就是当前位置值就好了。根本就不用跟上次的值比较,因为你这个是多段开关,又不是编码器。

使用特权

评论回复
36
abcxuyangyang|  楼主 | 2017-4-14 15:39 | 只看该作者
rogerjw 发表于 2017-4-14 13:26
每个key都对应相应值,比如key1是=key0+1,key2=key0+2……key5=key5=key0+5,这样子的话就能保证你最终 ...

你这个方法当初也想过,但是考虑到旋转可以逆时针和顺时针旋转,当旋转角度大的时候,会无法确定左旋转还是右旋转,到底是加还是减呢

使用特权

评论回复
37
NE5532| | 2017-4-14 16:11 | 只看该作者
abcxuyangyang 发表于 2017-4-14 15:39
你这个方法当初也想过,但是考虑到旋转可以逆时针和顺时针旋转,当旋转角度大的时候,会无法确定左旋转还 ...

这是因为检测频率低了造成的吧?

使用特权

评论回复
38
liubeihua| | 2017-4-18 14:31 | 只看该作者
用编码器上面已有图了,型号EC11,公共端接地另两端接上拉电阻,如用STM32F103的话定时器设成编码器模式,51也不难用到一个定时器。

使用特权

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

本版积分规则