旋转编码器是可以无限旋转的设备。像这样的简单对象没有锅子那样的真实状态,因此,当您启动时,将无法简单地从变成它的编码器中读取信息。
什么是编码器?
在位置感测中,编码器是一种可以检测机械运动并将其转换为模拟或数字编码输出信号的设备。更具体地说,它测量位置,同时测量速度。加速度和方向可以从线性或旋转运动的位置得出。
但是因为您可以继续转动它,所以它始终没有开始,中间或结束。但是,如果您跟踪代码中的旋转,则可以将其用作旋钮输入,并且可以根据需要随意向上或向下旋转。
旋转编码器如何工作?
像这样的最简单的编码器仅使用4个引脚,其中一个是接地引脚,另一个是Vcc。其他两个引脚会改变状态,并且始终为高电平或低电平,因此它们总共只能有4种组合。00、01、10和11。
这称为2位格雷码。因此,当您转动它时,arduino可以说……好吧,您现在是01,现在您是00,所以您以这种方式移动。或者您现在是01,但是现在您是10,所以您必须以另一种方式移动。您会看到该编码器有5个引脚,另两个仅是按下时接合的简单开关。
乐发Ⅷl 听起来超级简单,有点,但是我们可以做的是每次值改变时我们都可以检查它的移动方向。然后,如果我们每次旋转一个值都增加一个值,而当我们又移动一步时就减少它。
自启动以来,我们可以跟踪它已经移动了多少。因此,如果您想将旋钮调到最大11,那就是您了。(我保证那里有一个双关语)
因此,旋转编码器的真正时髦之处在于它可以正常工作。每当这些值改变时,我们都需要知道。这可能很难,因为如果arduino正在执行某些操作(例如delay(1000)或您拥有什么)的过程中,我们将错过更改。
因此,我们需要一种方式对arduino说:我不在乎您在做什么,何时在做什么;如果您看到这两个引脚中的任何一个都更改了状态,则放弃所有内容并对其进行管理。为此,我们需要一种叫做中断的东西。
中断很神奇
中断插针是特殊的插针,可以阻止您的arduino并强迫它继续前进。因为它们是特殊的销,您只能在arduino上得到其中的一些;但是这些引脚可以监视任何变化(从高到低/从低到高),下降(从高到低)或上升(从低到高)。
您可以将中断功能连接到这些引脚,以便在发生更改时使用。它将删除所有内容并运行该功能。它变得时髦,因为它打破了arduino循环的基本线性特性。但是当您掌握它时,它可能会成为最强大的功能。
乐发Ⅷl 这些函数内部使用的所有全局变量都有一个特殊的名称。它们被称为易失性变量,这是有充分理由的。它们的值可以随时更改。
因此,如果您在循环中使用了两次易失性,那么如果它在中断功能期间被更改,则第二次可能不是相同的值。