2016-12-06 19 views
0

皆さん、こんにちは!Pythonから入力を一切受けないインクリメンタルロータリエンコーダ

私は最近、2つのインクリメンタルロータリーエンコーダを購入しました。そのうちの一つが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() 

今のところ、これは私与えられた、本当にうまく動作します私のラズベリーパイのGPIO用にこれらのピンを使用してください。今

、私はより多くの牛肉や敏感エンコーダ(although wildly sold on Ebay/Amazon, it seems to have no real maker/type?)があります。

enter image description here

を私はまったく上の任意の読み取りを取得することはできませんよ。私は同じコードを使用する前に誓って、それがうまくいった。

どちらもインクリメンタルエンコーダのように見え、両方とも2相出力を持っています。何が起こっている?どうして私はそれを働かせることができないのですか?

答えて

1

このエンコーダはオープンコレクタ出力を持っていると言われています。つまり、エンコーダはプルアップ抵抗を必要とするので、高いロジックレベルを見ることができます。代わりに、プルダウンでGPIOピンを設定してください。

関連する問題