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 引脚配置了下拉菜单。
大家好!
我最近购买了两个增量式旋转编码器。其中之一是在 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 引脚配置了下拉菜单。