从Python Incremental Rotary Encoder完全没有输入

时间:2016-12-06 19:55:21

标签: python raspberry-pi encoder

每个人,你好!

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

enter image description here

在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?):

enter image description here

我根本无法阅读任何内容。我可以在使用相同的代码前一天发誓并且它有效。

它们都看似增量编码器,并且都具有2相输出。到底是怎么回事?为什么我不能让它工作?

1 个答案:

答案 0 :(得分:1)

该编码器被描述为具有集电极开路输出,这意味着您需要上拉电阻才能看到它们的高逻辑电平。您可以将GPIO引脚配置为下拉式。