2016-05-04 1 views
0

J'essaie d'allumer et d'allumer avec un bouton-poussoir, mais il ne reste allumé que lorsque le bouton est enfoncé. Comment puis-je réparer cela ?La LED ne reste allumée que lorsque le bouton est enfoncé?

ci-dessous est le code que je utilise:

# 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? 

[Modifier] Quand je lance le code de la led commence (comme je veux que ce soit), puis lorsque le bouton est appuyé sur le conduit s'allume, mais ne reste allumé que lorsque le bouton est maintenu enfoncé. Je veux que ce soit une pression allume le led, et il restera jusqu'à ce que le bouton soit pressé à nouveau.

+0

Ligne 9: la DEL «Faux» ne serait-elle pas éteinte? – GibralterTop

+0

Lorsque je lance le code, la led commence (comme je le veux), puis quand la touche est pressée, la led s'allume, mais elle ne reste allumée que lorsque le bouton est maintenu enfoncé. Je veux que ce soit une pression allume le led, et il restera jusqu'à ce que le bouton soit pressé à nouveau. –

Répondre

1

Essayez ceci:

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

Cette bascule sur relâchant le bouton (comportement par défaut du bouton sur la plupart des OS). Dans l'autre sens:

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

merci cela a fonctionné pour moi fonctionne –

0

Votre code conserve la LED tant que le bouton est enfoncé.

Vous pouvez mettre en œuvre le mécanisme de basculement en gardant dans une variable de l'état LED

... 
ledState = False 
buttonPressed = False; 

... 

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

si GPIO.input (6) ^ SyntaxError: syntaxe invalide –