前言:使用最简单粗暴的方式实现编码器的使用,简单易懂,准确率高
编码器原理图:
一共只有四个重要引脚,分别是com:公共端,接GND或者VCC都行,如果接GND则IO上拉,接VCC则IO下拉,S:按钮检测(编码器自带了一个按键),A/B:AB线,用于检测编码器正反转以及转了几格
编码器AB线规律:
A线默认电平状态永远是1,只有在编码器拨动一格的时候会先变0,随后恢复成1
B线默认电平状态不稳定,在编码器不拨动完整一格的情况下,轻微顺时针触碰拨盘会变1,轻微逆时针触碰拨盘会变0
根据这个规律来完善逻辑:当A线从0变化为1时,说明编码器已经被拨完了完整的一格,由于B线的状态只要轻轻的触碰就能改变,所以此时B线的值 由 拨动时 是 顺时针旋转还是逆时针旋转决定,如果读出为1,则说明刚刚顺时针拨动了一格
代码实现:
所有实现加在一起只有大约40行的代码,核心逻辑只有16行代码,非常简明简单,接下来解释一下工作流程:
流程:
1、初始化相关的GPIO,由于我的COM端接GND,所以将相关的IO配置为上拉输入
2、定义一个标志位flag,用于控制是否进行接下来的判断
3、循环中判断A线的状态是否为0,如果为0,则将flag置1,以进行等待A线变为1的操作
4、循环等待A线由0变1,说明已经拨动了一格,此时及时读取B线的值即可判断出当前是顺时针旋转还是逆时针旋转,然后将flag置0,等待下次触发
总结:
使用IO查询法做的编码器读取,读取速度为1ms,这就注定了不能转的太快,实测10ms拨一格,不会出现误判的情况,实际上正常使用,即使是快速旋转的时间间隔也是15ms以上,基本上可以保障准确率,但是如果非要猛转它,那就只能使用其他外设解决了,希望本教程对你有所帮助(*゜ー゜*)
「艾尔登法环」梅琳娜手办开订 立体手办▪
万代「艾尔登法环」白狼战鬼手办开订 立体手办▪
「夏目友人帐」猫咪老师粘土人开订 立体手办▪
「五等分的新娘∬」中野三玖·白无垢版手办开订 立体手办▪
「海贼王」乌索普Q版手办开订 立体手办▪
良笑社「初音未来」新手办开订 立体手办▪
「黑岩射手DAWN FALL」死亡主宰手办开订 立体手办▪
「盾之勇者成名录」菲洛手办登场 立体手办▪
「魔法少女小圆」美树沙耶香手办开订 立体手办▪
「咒术回战」七海建人粘土人登场 立体手办▪
「五等分的新娘」中野二乃白无垢手办开订 立体手办▪
「为美好的世界献上祝福!」芸芸粘土人开订 立体手办▪
「公主连结 与你重逢」六星可可萝手办开订 立体手办▪
「女神异闻录5」Joker雨宫莲手办开订 立体手办▪
「间谍过家家」约尔・福杰粘土人登场 立体手办▪
「街角魔族 2丁目」吉田优子手办开订 立体手办▪
「火影忍者 疾风传」旗木卡卡西·暗部版粘土人登场 立体手办▪
「佐佐木与宫野」宫野由美粘土人开订 立体手办▪
「盾之勇者成名录」第2季拉芙塔莉雅手办开订 立体手办▪
「咒术回战」两面宿傩Q版坐姿手办开订 立体手办▪
「DATE·A·BULLET」时崎狂三手办开订 立体手办▪
「狂赌之渊××」早乙女芽亚里粘土人开订 立体手办▪
「魔道祖师」魏无羨粘土人开订 立体手办▪
「新·奥特曼」奥特曼手办现已开订 立体手办▪