2017-03-27 10 views
-1

私はラズベリーパイ2のRPi.GPIOを使って、次のコードで簡単なプッシュボタンスクリプトを作成しようとしています。シンプルなラズベリーパイ2 GPIOは動作しません

import RPi.GPIO as GPIO 
import time 
import os 

GPIO.setwarnings(False) 

GPIO.setmode(GPIO.BCM) 
GPIO.setup(25, GPIO.IN, pull_up_down = GPIO.PUD_UP) 

while True: 

    input_state=GPIO.input(25) 
    if input_state==False: 
    print("Open") 
    time.sleep(0.1) 

    GPIO.cleanup() 

ただし、上記のコードは機能していないようです。私は間違って何をしていますか?

+0

スクリプトがエラーを与えていますか?それともいつも「開く」と言っていますか? –

+0

ようこそStackOverflowへ!私はあなたの質問を編集して、あなたがやっていることを正確に示し、余計な字下げがないようにコードを再フォーマットしました。しかし、さらに質問を編集する必要があります。良い質問は、質問(チェック、それがある)、具体的なコード(チェック、それもある)、プログラムの出力(それでも失われている)と期待される出力(まだ行方不明)があります。 「うまくいきません」はあまりにも曖昧です。プログラムが何をしているのか、それが何をするのかを記述してください。 – Martijn

+0

最後に 'GPIO.cleanup()'を使わなければなりません(whileループの外側)。そうしないと、ピン設定が消去され、動作しません。 –

答えて

2

問題は、whileループ内にGPIO.cleanup()があることに起因します。

ループ外に移動する必要があります。

それ以外の場合、繰り返し実行するとピン設定が削除され、スクリプトが正常に動作しなくなります。

また、エッジが検出されたとき(立ち上がりまたは立ち上がり)にのみトリガーするGPIO.wait_for_edgeに興味があります。

例コード:

while True: 
    GPIO.wait_for_edge(25, GPIO.RISING) 
    print('Button 1 Pressed') 
    GPIO.wait_for_edge(25, GPIO.FALLING) 
    print('Button 1 Released') 
GPIO.cleanup()   
関連する問題