2016-05-04 16 views
0

私はプッシュボタンで回してLEDを点灯させようとしていますが、ボタンが押されても点灯し続けます。これをどうすれば解決できますか?以下ボタンを押し下げてもLEDは点灯したままになりますか?

私が使用しているコードです:

# Import the required module. 
import RPi.GPIO as GPIO 
# Set the mode of numbering the pins. 
GPIO.setmode(GPIO.BCM) 
#GPIO pin 10 is the output. 
GPIO.setup(13, GPIO.OUT) 
#GPIO pin 8 is the input. 
GPIO.setup(6, GPIO.IN) 
#Initialise GPIO13 to low (False) so that the LED is off. 
GPIO.output(13, False) 
while 1: 
    if GPIO.input(6): 
     GPIO.output(13, True) 
    else: 
     GPIO.output(13, False) 
#keep LED on till the button pressed again then it turns off? 

[編集]私は、コードを実行するとLEDが消灯を開始(私はそれになりたいと)ボタンが押されたときに主導をオンになりますが、ボタンを押している間はオンのままです。私はそれが1つのプレスになるようにしたい、そして、ボタンが再び押されるまでそれは続きます。

+0

9行目:LEDをオフにすることはできません。 – GibralterTop

+0

コードを実行すると、LEDが点灯し始めます。ボタンが押されたときにLEDが点灯しますが、ボタンが押されている間だけ点灯します。私はそれが1つのプレスになるようにしたい、そして、ボタンが再び押されるまでそれは続きます。 –

答えて

1

変数にLEDの状態を保つことによって、トグル機構を実装することができ、これを試してみてください:

isPressed = False 
isOn = False 
while 1: 
    if GPIO.input(6): 
     isPressed = True 
    elif isPressed: 
     isOn = not isOn 
     GPIO.output(13, isOn) 
     isPressed = False 

これは、ボタン(ほとんどのOSのデフォルトのボタンの動作)を放出に切り替わります。他の方法では:

isPressed = False 
isOn = False 
while 1: 
    if GPIO.input(6): 
     if not isPressed: 
      isPressed = True 
      isOn = not isOn 
      GPIO.output(13, isOn) 
    else: 
     isPressed = False 
+0

ありがとうございました –

0

あなたのコードはボタンが押されている限りLEDを1に保ちます。

あなたは

... 
ledState = False 
buttonPressed = False; 

... 

if GPIO.input(6): 
    if not buttonPressed: 
     buttonPressed = True 
     ledState = not ledState 
     GPIO.output(13, ledState) 
else 
    buttonPressed = False 
+0

GPIO.input(6) ^ SyntaxError:無効な構文 –

関連する問題