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

[复制链接]
7161|37
皈依 发表于 2017-4-13 20:22 | 显示全部楼层
旋转检测我就想到了滑动变阻器
qinhecat1 发表于 2017-4-13 22:32 | 显示全部楼层
用360度旋转的旋转编码器就行,根据2个输出端的电平相位变化不同来判断选择方向,所有的音响音量控制,示波器参数调节都是那种玩意,量大又便宜,现成的源码网上也多的是。
王紫豪 发表于 2017-4-13 23:35 | 显示全部楼层


这个行吗?

或者直接用个单圈电位器就行了,adc采样。。
songchenping 发表于 2017-4-14 08:19 | 显示全部楼层
你指的速度快有多快啊。每次是扫描全部按键值还是扫描部分按键值啊?
longquanshuang 发表于 2017-4-14 08:32 | 显示全部楼层
LZ一定在逗你们玩
NE5532 发表于 2017-4-14 08:46 | 显示全部楼层
电位器,编码器,触摸按钮都可以实现,楼主先选下按钮类型。
rogerjw 发表于 2017-4-14 08:58 | 显示全部楼层
按键本身应该是没问题的,主要问题应该是出现在程序处理;
你可先用led做指示,识别到当前key消抖后马上显示,是马上显示。然后转一圈试看看是否全亮。
做成key与led一对一的形式,先确定是否可以(顺便抓下快速旋转每个档位的低电平维持多长时间)。如果可以,说明你程序上处理有问题。
正常消抖30-50ms都没问题。
Ketose 发表于 2017-4-14 09:42 | 显示全部楼层
使用外部中断不可以吗?
masmin 发表于 2017-4-14 09:55 | 显示全部楼层
看看你吗当年学习的锁存器电路就知道怎样搞了。
pywmiss 发表于 2017-4-14 12:07 | 显示全部楼层
abcxuyangyang 发表于 2017-4-13 20:08
无限旋转旋钮,实在就是根据按键采集,实现数值的自加或自减比如,循环,比如 自加 0-1-2-3-4-3-2-1-0 ...

你是想自己做吗?
如果只是研究玩玩..那可以
如果是用于产品上,我认为这样是不可取的..自制的不够稳定吧,尺寸也不会太小...
 楼主| abcxuyangyang 发表于 2017-4-14 12:21 | 显示全部楼层
pywmiss 发表于 2017-4-14 12:07
你是想自己做吗?
如果只是研究玩玩..那可以
如果是用于产品上,我认为这样是不可取的..自制的不够稳定吧, ...

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

本帖子中包含更多资源

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

×
 楼主| abcxuyangyang 发表于 2017-4-14 12:22 | 显示全部楼层
Ketose 发表于 2017-4-14 09:42
使用外部中断不可以吗?

也想到了外部中断,担心外部干扰明显,误操作
 楼主| abcxuyangyang 发表于 2017-4-14 12:23 | 显示全部楼层
 楼主| abcxuyangyang 发表于 2017-4-14 12:28 | 显示全部楼层
rogerjw 发表于 2017-4-14 08:58
按键本身应该是没问题的,主要问题应该是出现在程序处理;
你可先用led做指示,识别到当前key消抖后马上显 ...

按键扫描10ms一次,思路是:做差值比较;此时状态数值减去上一次数值,大于0加一,正常旋转速度,按键检测正常。但是考虑到产品使用的环境;扫描过快,按键值扫描不到,就无法操作,
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,这样子的话就能保证你最终落在那个位置值就是当前位置值就好了。根本就不用跟上次的值比较,因为你这个是多段开关,又不是编码器。
 楼主| abcxuyangyang 发表于 2017-4-14 15:39 | 显示全部楼层
rogerjw 发表于 2017-4-14 13:26
每个key都对应相应值,比如key1是=key0+1,key2=key0+2……key5=key5=key0+5,这样子的话就能保证你最终 ...

你这个方法当初也想过,但是考虑到旋转可以逆时针和顺时针旋转,当旋转角度大的时候,会无法确定左旋转还是右旋转,到底是加还是减呢
NE5532 发表于 2017-4-14 16:11 | 显示全部楼层
abcxuyangyang 发表于 2017-4-14 15:39
你这个方法当初也想过,但是考虑到旋转可以逆时针和顺时针旋转,当旋转角度大的时候,会无法确定左旋转还 ...

这是因为检测频率低了造成的吧?
liubeihua 发表于 2017-4-18 14:31 | 显示全部楼层
用编码器上面已有图了,型号EC11,公共端接地另两端接上拉电阻,如用STM32F103的话定时器设成编码器模式,51也不难用到一个定时器。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部
0