GPIOからボタンを読み取るにはどうすればよいですか?


15

私はずっと前にこの種の初心者レベルのものから自分を考慮しましたが、私はそれで私がそれで例外的なレベルのトラブルを抱えているように見えるので、私が思っていたほど賢くないと思います!

だから私はついに試験を終えて新しいおもちゃで遊ぶことができたので、最初にしたことはUARTを介してLCDキャラクターディスプレイを装備することでした。私は問題なく動作するようになったので、このボタンでなぜそんなに苦労しているのかを理解するのに本当に苦労しています!

そこで、私はarduinoの場合と同様のボタンを設定しました。グラウンドに接続された1kの抵抗で。マルチメーターを使用して、ボタンが機能し、適切な量の電力を出力していることを確認しました。シェルにSSHで接続し、ボタンをGPIOピン7に接続して、Pythonに接続しました。ここに私が試したものがあります:

GPIO.pinout(GPIO.BOARD)
GPIO.setup(7,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)
while 1==1:
    inputval = GPIO.input(7)
    print inputval

これによりFalse、ボタンの押し方に関係なく、無限のループが得られます。私GPIO.PUD_UPもそれを試してみましたが、True代わりに無限ループになりました。私もそれを試してみましたがGPIO.PUD_OFF、もっと得ましたFalse

ここに何かが足りませんか?


では、GNDに接続された1k抵抗と直列にスイッチがありますか?それで動作するはずGPIO.PUD_UPです。GPIO.PUD_UPオンでボタンを押した状態でどのような電圧が表示されますか?
ジョンラルーイ

少し混乱しています。スイッチは何に接続されていますか?
アレックスチェンバレン

こんにちはマイケル、ラズベリーパイへようこそ!私はあなたの2つのアカウントを自由に統合しました。ありがとう!

回答:


6

私のGPIOは持っていませんpinout、私はそれを変更しなければなりませんでしたsetmode

import time
from RPi import GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
while True:
    inputval = GPIO.input(7)
    print inputval
    time.sleep(1)

GPIO.BOARDピン7 を使用しているため、ラベルが付いていGPIO 4(GPCLK0)ます。を使用するGPIO 7(CE1)場合は、GPIO.setmode(GPIO.BCM)代わりに使用する必要があります

ここに画像の説明を入力してください

から1kの抵抗器に触れてコードをテストし3V3 PowerましたGPIO 4(GPCLK0)


なぜそれが機能しなかったのか、あなたの正しいことはほぼ確実です。GPIO.BOARD物理的なピンの番号付け方式ではなく、写真に示されているように、ボード自体のピン配列が印象的でした。仕事から家に帰るとき、私はそれを試してみます、そして、それはうまくいくと確信しています。
マイケル

1

ピンのセットアップで「pull_up_down = GPIO.PUD_DOWN」を使用することはありません。これを試して:

GPIO.setmode(GPIO.BCM)
GPIO.setup(PinNum,GPIO.IN)
while 1==1:
    if GPIO.input(PinNum)==1:
        print "True"
    else:
        print "False"

ニブラーが言ったように、PinNumがBCM GPIO用であることを確認してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.