资讯详情

音游手台中--EC11编码器的控制[2]

编码器">简单介绍EC11编码器

开关相比,编码器是一种可以转动的东西。EC编码器并不复杂。

EC11编码器 图片来自立创商城

这种编码器实际上是在旋转过程中

这张图解释了内部的简单结构,其中黄色是一个结点,我们成为了C,所以假设顺时针旋转时每次经过一个格子,必然是这个过程.(与上图相比,AB其实触点很窄,可以实现AB同时在C上,AB同时不在C上)

逆时针就是恰恰相反

中断触发A的下降边缘。

A下降沿触发-->检测B的电平

void pinA_falling_exit() //假设A下降沿中断进入函数 {     if(readPin(pinB) == 1) ////读取B的电平     {         //如果B电平高,顺时针转     } else {         //如果B是高电平,是逆时针转     } }

每次点击一格触发函数。当然,顺时针或逆时针因编码器而异。

现在应该可以理解这种编码器的图了吧。

啊,我们只用了三只脚,EC另一边还有两个编码器干什么的?实际上,这是一个开关,EC作为一个小开关,11编码器可以垂直按下。

一般来说,C引脚,也就是最特别的引脚,是的EC编码器中间的引脚。

为什么用EC11编码器

最重要的特点是便宜!

大多数电位器不支持无限转动。我们需要的主要变化是在哪里转动?转了多少?配合声音玩蛇。

光电编码器分辨率较高等。

ec本质上是开关,有抖动。ec11旋转时有点击感(可能不是缺点)。

怎么消抖?

最便宜的方法 AC和BC各并联一个100nf小电容。

RC微积分电路、施密特触发器、施密特触发器推D触发器等电路。

不建议硬件延迟抖动。在音频游戏手台中,必须减少每1次ms的延迟。

事实上,如果编码器模拟鼠标的位置量,则不需要抖动。因为抖动带来的偏差对整体来说很小。

实测1000hz不需要回报。

编码器模拟

加上编码器,可以模拟鼠标等操作。

鼠标报文8bit x 4

只需发送位移量即可。

#define MoveX 1; #define MoveY 2;  uint8_t mouseData[] = {0, 0, 0, 0};  mouseData[MoveX] = 10; sendRepoet(mouseData); delay()//必须大于回间隔 mouseData[MoveX] = 0; sendRepoet(mouseData); ///   mouseData[MoveX] = -10; sendRepoet(mouseData); delay(); mouseData[MoveX] = 0; sendRepoet(mouseData); ////

一个问题是,我们经常以中断的方式进入这个函数,而延迟函数(中断优先级)可能无法用于中断,因此我们需要一些其他的解决方案。

STM32F103 HAL在仓库开发中,外部中断停止执行程序(默认中断优先级)

比如分开设置报文的代码段(主函数),发送报文的代码段(设置为定时器定时中断)分开等等...

标签: 电位器的103

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司