2016-06-24 8 views
1

私はラズベリーパイとPythonを使っているので、5つのLEDとボタンで簡単な信号シミュレータを作ろうとしています。ここに私のコードだ:真しばらくRaspberry Pi Pythonボタンを押してコードを実行してください

:ボタンが押されていない場合

inputValue = GPIO.input(17) 
if (inputValue == False): #if the button was pushed 
    print("Button press ") 
else: #if it wasn't pressed 
    GPIO.output(green_traf_LED, GPIO.LOW) #green T. LED on 
    GPIO.output(red_walk_LED, GPIO.LOW) #red W. LED always on 
    time.sleep(6) 
    GPIO.output(green_traf_LED, GPIO.HIGH) #green T. LED off 
    #yellow blinking, red 
    for k in range(10): 
     #red walk LED still on 
     GPIO.output(yellow_traf_LED, GPIO.LOW) #yellow T. LED on 
     time.sleep(0.2) 
     GPIO.output(yellow_traf_LED, GPIO.HIGH) #yellow T. LED off 
     time.sleep(0.2) 
    #red, white 
    GPIO.output(red_traf_LED, GPIO.LOW) #red T. LED ON 
    time.sleep(6) 
    GPIO.output(red_traf_LED, GPIO.HIGH) #red T. LED off 
time.sleep(0.3) 

だから、基本的に、私は自分のPythonのコードはコードxを実行したいです。ボタンが押されると、コードyを実行してから、コードxを実行してからもう一度押すまで続けます。しかし、私がコードを実行すると、LEDが点灯せず、ボタンを押すとメッセージが表示されません。配線、LEDの番号付け、ボタンの番号付けが正しいことを100%確信していますので、何を修正する必要がありますか?

+0

ボタンを押したときに正しい値を得ていますか? –

+0

問題は、あなたのコードがbutton_clickを一度チェックしている間に、コードが入力イベントのためにもう見ていないプロセス全体のオンとオフの間にあると思います。 –

答えて

0

最初にあなたは逆さにしているようですHIGHLOW

入力ポートをリッスンして状態をファイルなどに入れるには、サービス/バックグラウンドスクリプトが必要です。 Node-REDがインストールされている場合、GPIOポートを監視してサービスをプログラムする必要はありません。

import time 
#initialise a previous input variable to 0 (assume button not pressed last) 
prev_input = 0 
while True: 
    #take a reading 
    input = GPIO.input(17) 
    #if the last reading was low and this one high, print 
    if ((not prev_input) and input): 
     print("Button pressed") #put information in file or other... 
     #update previous input 
     prev_input = input 
     #slight pause to debounce 
     time.sleep(0.05) 

Source

は、その後、あなたの上記のプログラムの代わりに、ピン値を読むには、ファイルの内容を読み取ります。

関連する問題