旋转编码器是一种机电设备,将轴的角度运动转换为模拟或数字代码。
在这个项目中,通过Arduino来讲解旋转编码器的工作原理。下面的部分是对旋转编码器、电路和工作原理的介绍。
线路图
硬件要求
- 旋转编码器
- Arduino UNO
- 液晶显示器
旋转编码器简介
旋转编码器是一种输入装置,提供有关旋钮旋转的方向和数量的信息。有一个与旋转编码器相关的选择开关,可通过推动旋钮激活。
常用的旋转编码器是增量式旋转编码器。这种类型提供了一个关于转轴的瞬时结果,通过产生两个方波输出,彼此是90度不相。
旋转编码器必须编码引脚A和B产生高或低输出取决于轴的旋转和方向。
旋转编码器的基本功能可以解释为两个开关的组合,它们由于轴的旋转而关闭或打开。
当轴旋转时,开关按一定的模式关闭和打开。如果输出被视为二进制,那么对于时钟旋转,A和B的输出将是00、01、11和10。
逆时针或逆时针旋转,输出为10、11、01、00。两个旋转方向的脉冲波形如下所示。
为了测试序列,旋转编码器的输出引脚连接到两个led,如下面的电路所示。
当旋转编码器的旋钮按顺时针或逆时针方向旋转时,led按上述顺序亮起。
Arduino旋转编码器的电路设计
旋转编码器由五个引脚组成:两个编码引脚A和B(或CLK和DT),一个开关引脚和两个电源引脚Vcc和GND。
两个编码引脚和开关引脚提供数字信号。连接Arduino的引脚2、3、4。
为了显示菜单的对象,使用20X4液晶显示器。连接方式类似于16X2 LCD。LCD的RS和E连接Arduino的引脚5和6。
LCD的数据引脚D4 - D7(引脚11 - 14)连接Arduino的引脚7 - 10。
工作
旋转编码器提供无限的旋转方向上的选择按钮(推动旋钮)。这种独特的功能可以用在“菜单”选择应用程序中,轴的任意方向旋转将允许我们浏览菜单的内容,按下按钮将允许我们选择突出显示的菜单内容。
在本课题中,通过Arduino和LCD来说明旋转编码器作为菜单选择器的工作原理。电路的工作原理如下。
Arduino的代码是按照应用程序编写并上传到Arduino的。上电时,LCD水平显示值列表。
顺时针旋转旋转编码器的轴,菜单项将从左到右变化,每转动旋钮,每个项目将被高亮显示。
一旦到达最后一个项目,进一步的旋转将不会导致任何操作,但最后一个项目将突出显示。
逆时针旋转时,菜单项将以相反方向显示。高亮显示的项目将显示在项目列表下面。
如果我们想要选择任何突出显示的项目,旋转编码器的按钮被按下。这将显示为选中项,选中项将保持此状态,直到选中下一项。
代码
请注意
- 本项目通过Arduino的正常切换操作和作为菜单选择器来说明旋转编码器的工作原理。
- 在每个子菜单中有多个层次结构的菜单可以作为选择器开关实现。
- 如果菜单内容中的层次结构层次更多,那么必须在Arduino中使用Interrupts的概念。
- 旋转编码器可用于伺服电机和步进电机的精密控制。
6的反应
嘿,
你能把代码发给我吗?
Thnaks
嘿,看看这篇文章的结尾,我们已经添加了代码。谢谢
你好,
你能告诉我在哪里可以找到RotaryEncoder.h库吗?我认为这是一个定制的图书馆。
你好,请问RotaryEncoder.h图书馆在哪里?谢谢
旋转编码器在易趣上的权利知道
谢谢你告诉我。
我建好了,它工作得很好。我想在我的项目中使用这个菜单,但我需要一些帮助。
我需要在每个菜单项中更改两到三个值。
例如,如果选择菜单项为1,我需要编辑变量a和b的值,如果选择菜单项为2,我需要修改变量c, d和e,这些变量的值将在0到250之间。
你觉得最简单的方法是什么?
我知道这篇文章是2年前的,但是我希望你能帮助我。
在连接图上,编码器连接到引脚2,3和4,但在代码中对应的引脚是10,11和12。不是什么大事,但可能会让人困惑。
所有最好的!