bonjour,
Le add_event est à usage unique ... donc dans ta boucle il tente de rajouter à chaque fois un event
voici mon code pour tester un bouton et actionner un relay de mon coté
Code : Tout sélectionner
import RPi.GPIO as GPIO #bibliothèque RPi.GPIO
Button_Red = 5
Button_Green = 6
RelayPin = 20
RLed = 19
GLed = 16
print 'Debut ...'
GPIO.setmode(GPIO.BCM) #utilisation des numéros de ports du
#processeur
GPIO.setup(Button_Red, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(Button_Green, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(RelayPin, GPIO.OUT)
GPIO.setup(RLed, GPIO.OUT)
GPIO.setup(GLed, GPIO.OUT)
while True:
time.sleep(0.5) # test tempo lecture fichier xml
input_state_START = GPIO.input(Button_Green)
input_state_STOP = GPIO.input(Button_Red)
Relayinput = GPIO.input(RelayPin)
RLedInput = GPIO.input(RLed)
GLedInput = GPIO.input(GLed)
if (input_state_START == False and Relayinput == 0 ):
print('Button_Green Pressed' + str(input_state_START))
GPIO.output(RelayPin, GPIO.HIGH)
GPIO.output(GLed, GPIO.HIGH) #sortie 16 high
if (input_state_STOP == False and Relayinput == 1 )
print('Button_RED Pressed' + str(input_state_START))
GPIO.output(RelayPin, GPIO.LOW)
GPIO.output(RLed, GPIO.HIGH) #sortie 19 high
C'est un exemple mais dans ton cas :
Code : Tout sélectionner
control_B=38
GPIO.setmode(GPIO.BOARD)
GPIO.setup(control_B,GPIO.IN,pull_up_down=GPIO.PUD_UP)
while True :
if GPIO.input(control_B):
print ("contacts ouverts')
else:
time.sleep(100)
print ("contacts fermes')
ou aprés lecture du Add_event : on ajoute une FONCTION sur un événement du bouton
Code : Tout sélectionner
def buttonPressed():
print ("contacts")
control_B=38
GPIO.setmode(GPIO.BOARD)
GPIO.setup(control_B,GPIO.IN,pull_up_down=GPIO.PUD_UP)
GPIO.add_event_detect(control_B, GPIO.FALLING, callback=lambda x: buttonPressed(), bouncetime=2000)
PS : tu as des erreurs entre ' et " sur tes prints