找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
楼主: lkc8210
打印 上一主题 下一主题
收起左侧

一定位一脉冲的EC11旋转编码器最简洁的单片机驱动代码

  [复制链接]
楼主
ID:774081 发表于 2024-1-19 14:17 | 显示全部楼层
完美的代码效果应该是转动一下只计数一下,不能多增也不能不增,最重要的是!不论转得多快还是多慢,都如此,那才是好代码!从这个标准来说,我试验了上10款作者自诩为非常不错的代码,均不合格!当然我自己也编不出合格的代码来,一度怀疑是我买的EC11编码器在硬件方面不合格,因为只有上拉电阻。没有消抖电容。但符合这样标准的编码器效果是普遍存在的,比如十几、二十年前的进口功放机,就采用了旋转编码器调整音量,那编码器的使用效果才是我追求的,现在我的一个项目卡在编码器上,怎么都不好用,肯定采用中断来实现,还没找到合适的代码,下一步寄加消抖电容看看谁的代码最理想,再来汇报。
回复

使用道具 举报

沙发
ID:774081 发表于 2024-1-26 16:36 | 显示全部楼层
之前测试很多代码,效果均不理想,表现为正转、反转有误判,从而导致计数不对。我想到的办法是得到方向数据后(比如正转定义为1,反转定义为0),先修正方向,再结合中断和方向二者,决定是否累加或累减计数值。方案是建立一个数组,包括10个元素,用来存储获得的方向,任何时刻记录的是最近十次获得的方向数据,对数组的10个元素进行累加,和超过5时,强制为正方向,反之为负方向。实测效果有所改善,计数值绝不会忽大忽小、重复出现等情况了。遗憾的是如果你反复正转、反转1下,那计数还是会有问题,即不会保持不变。但这种使用场景很少见吧?真要微调,你多转几下,再反过来多转几下就行。有人会说,实际卡顿感与计数反映会不同步吧?理论上讲是这样,但单片机速度很快,实际感觉不到不同步。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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