GPIO.wait_for_edge et KeyboardInterrupt
Posté : ven. 26 mai 2017 14:59
Bonjour,
je prépare une sonnette qui enverra un SMS à plusieurs destinataires.
Pour détecter l'appui j'utilise la fonction wait_for_edge de la librairie GPIO, pour les debug je voulais remettre à 0 les GPIO en cas de CTRL+C mais cela ne fonctionne pas.
J'obtiens une erreur : RuntimeError: Error waiting for edge, est ce qu'il y a un moyen de sortir proprement en remettant les GPIO à 0 ?
Voici l'erreur que j'obtiens quand j’appuie sur ctrl+c :
pat@raspi2:~/Python/sonnette $ sudo ./sonnette.py
^CTraceback (most recent call last):
File "./sonnette.py", line 50, in <module>
attente_appui()
File "./sonnette.py", line 37, in attente_appui
GPIO.wait_for_edge(pin, GPIO.FALLING, bouncetime=debounce)
RuntimeError: Error waiting for edge
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "./sonnette.py", line 50, in <module>
attente_appui()
KeyboardInterrupt
et voici mon script :
[edit] : les BBcodes ne fonctionnent pas sur ce post (je l'ai posté en ayant écrit moins de 5 messages)
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
"""
Envoi SMS quand appui sur la sonnette
utilisation de la fonction GPIO.input()
Bouton poussoir raccordé entre GPIO22 et +3.3V
(avec montage Pull-up pour éviter les interférences)
nom programme : sonnette.py
logiciel : python 3.4.2
cible : raspberry Pi
date de création : 16/05/2017
date de mise à jour : N/A
version : 1.0
auteur : Pat
référence : http://www.framboise314.fr/le-bouton-po ... -etonnant/
: https://sourceforge.net/p/raspberry-gpi ... edomCookie
"""
#-------------------------------------------------------------------------------
# Bibliothèques
#-------------------------------------------------------------------------------
import RPi.GPIO as GPIO #bibliothèque RPi.GPIO
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Fonctions Persos
#-------------------------------------------------------------------------------
import sendSMS #envoi SMS via twilio
#-------------------------------------------------------------------------------
pin = 22 #broche utilisé en entrée
debounce = 5000 #attente anti-rebond / anti SPAM en ms
GPIO.setmode(GPIO.BCM) #utilisation des numéros de ports du processeur
GPIO.setup(pin, GPIO.IN) #GPIO en entrée (montage Pull-Up pour eviter interferences)
def attente_appui():
#attente d'un appui par détection de l'évènement passage à 0 (FALLING)
GPIO.wait_for_edge(pin, GPIO.FALLING, bouncetime=debounce) #<== ligne 37
#évènement FALLING détecté => on passe à la suite du programme
sendSMS.sendMessage ('On sonne', '+336XXXXXXXXX')
sendSMS.sendMessage ("Quelqu'un sonne", '+336YYYYYYYYY')
if __name__ == '__main__':
"""
Programme par défaut
"""
try:
while True:
attente_appui() #<== ligne 50
except (KeyboardInterrupt, SystemExit): #sortie boucle par ctrl-c
GPIO.remove_event_detect()
GPIO.cleanup() #libère toutes les ressources GPIO
print("\nProgramme interrompu\n")[/code]
je prépare une sonnette qui enverra un SMS à plusieurs destinataires.
Pour détecter l'appui j'utilise la fonction wait_for_edge de la librairie GPIO, pour les debug je voulais remettre à 0 les GPIO en cas de CTRL+C mais cela ne fonctionne pas.
J'obtiens une erreur : RuntimeError: Error waiting for edge, est ce qu'il y a un moyen de sortir proprement en remettant les GPIO à 0 ?
Voici l'erreur que j'obtiens quand j’appuie sur ctrl+c :
pat@raspi2:~/Python/sonnette $ sudo ./sonnette.py
^CTraceback (most recent call last):
File "./sonnette.py", line 50, in <module>
attente_appui()
File "./sonnette.py", line 37, in attente_appui
GPIO.wait_for_edge(pin, GPIO.FALLING, bouncetime=debounce)
RuntimeError: Error waiting for edge
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "./sonnette.py", line 50, in <module>
attente_appui()
KeyboardInterrupt
et voici mon script :
[edit] : les BBcodes ne fonctionnent pas sur ce post (je l'ai posté en ayant écrit moins de 5 messages)
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
"""
Envoi SMS quand appui sur la sonnette
utilisation de la fonction GPIO.input()
Bouton poussoir raccordé entre GPIO22 et +3.3V
(avec montage Pull-up pour éviter les interférences)
nom programme : sonnette.py
logiciel : python 3.4.2
cible : raspberry Pi
date de création : 16/05/2017
date de mise à jour : N/A
version : 1.0
auteur : Pat
référence : http://www.framboise314.fr/le-bouton-po ... -etonnant/
: https://sourceforge.net/p/raspberry-gpi ... edomCookie
"""
#-------------------------------------------------------------------------------
# Bibliothèques
#-------------------------------------------------------------------------------
import RPi.GPIO as GPIO #bibliothèque RPi.GPIO
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Fonctions Persos
#-------------------------------------------------------------------------------
import sendSMS #envoi SMS via twilio
#-------------------------------------------------------------------------------
pin = 22 #broche utilisé en entrée
debounce = 5000 #attente anti-rebond / anti SPAM en ms
GPIO.setmode(GPIO.BCM) #utilisation des numéros de ports du processeur
GPIO.setup(pin, GPIO.IN) #GPIO en entrée (montage Pull-Up pour eviter interferences)
def attente_appui():
#attente d'un appui par détection de l'évènement passage à 0 (FALLING)
GPIO.wait_for_edge(pin, GPIO.FALLING, bouncetime=debounce) #<== ligne 37
#évènement FALLING détecté => on passe à la suite du programme
sendSMS.sendMessage ('On sonne', '+336XXXXXXXXX')
sendSMS.sendMessage ("Quelqu'un sonne", '+336YYYYYYYYY')
if __name__ == '__main__':
"""
Programme par défaut
"""
try:
while True:
attente_appui() #<== ligne 50
except (KeyboardInterrupt, SystemExit): #sortie boucle par ctrl-c
GPIO.remove_event_detect()
GPIO.cleanup() #libère toutes les ressources GPIO
print("\nProgramme interrompu\n")[/code]