Python 增量旋转编码器根本没有输入

Getting no input at all from Python Incremental Rotary Encoder

大家好!

我最近购买了两个增量式旋转编码器。其中之一是在 3.3v 下运行的 KY-040:

在 Python 下运行的建议代码是:

from RPi import GPIO
from time import sleep

clk = 17
dt = 18

GPIO.setmode(GPIO.BCM)
GPIO.setup(clk, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(dt, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

counter = 0
clkLastState = GPIO.input(clk)

try:

        while True:
                clkState = GPIO.input(clk)
                dtState = GPIO.input(dt)
                if clkState != clkLastState:
                        if dtState != clkState:
                                counter += 1
                        else:
                                counter -= 1
                        print counter
                clkLastState = clkState
                sleep(0.01)
finally:
        GPIO.cleanup()

到目前为止,这工作得很好,因为我将这些引脚用于我的 Raspberry Pi 的 GPIO。

现在,当我拥有更强大、更灵敏的编码器时 (although wildly sold on Ebay/Amazon, it seems to have no real maker/type?):

我根本无法阅读它。我本可以在使用相同代码的前一天发誓它起作用了。

它们似乎都是增量编码器,并且都有两相输出。到底是怎么回事?为什么我无法让它工作?

该编码器被描述为具有集电极开路输出,这意味着您需要在其上安装上拉电阻才能在其上看到高逻辑电平。相反,您的 GPIO 引脚配置了下拉菜单。