Lors de lexécution dun programme en Python, pourquoi voudrais-je la commande de nettoyage lors de lutilisation des GPIO?
Commentaires
Réponse
Comme mentionné dans cet article Principes de base de RPi.GPIO 3 – Comment quitter proprement les programmes GPIO, éviter les avertissements et protéger votre Pi , utiliser correctement GPIO.cleanup (),
Utilisation correcte de GPIO.cleanup ()
RPi.GPIO fournit une fonction intégrée GPIO.cleanup () pour nettoyer tous les les ports que vous avez utilisés. Mais soyez très clair sur ce que cela fait. affecte tous les ports que vous avez définis dans le programme actuel. Il réinitialise tous les ports que vous avez utilisés dans ce programme en mode dentrée. Cela évite les dommages dus, par exemple, à une situation où vous avez un port réglé sur HIGH en tant que sortie et que vous le connectez accidentellement à GND (LOW), ce qui court-circuiterait le port et le ferait éventuellement frire. Les entrées peuvent gérer soit 0 V (LOW) soit 3,3 V (HIGH), il est donc plus sûr de laisser les ports comme entrées.
Jespère que cela dissipe votre doute.
Réponse
Vous nêtes pas obligé dutiliser la méthode de nettoyage.
À ma connaissance seulement les modules Python RPi.GPIO et RPIO.GPIO ont une méthode de nettoyage. La méthode de nettoyage définit tous les gpios que vous avez utilisés comme entrées et désactive les pull-ups / downs internes pour ces gpios.
Mon module pigpio Python na pas de méthode de nettoyage, pas plus que le module Python de câblagePi2 pour autant que je sache.
Commentaires
- À quoi sert alors la commande de nettoyage?
- @Human I ne ' ne pensez pas quil y a beaucoup dun but, je ' ai ajouté une telle méthode si je pensais que cétait nécessaire. dastaan, dans sa réponse, a souligné le raisonnement utilisé par lauteur du RPi.GPIO. Cest peut-être plus un penchant philisophique, je suppose que les utilisateurs ont une raison de faire ce quils font ou ne font pas ' t. Sils veulent laisser un gpio comme entrée une fois le programme terminé, ils doivent le définir comme entrée.
Réponse
Jai rencontré quelques problèmes lors de lutilisation de GPIO, principalement liés à la tentative de changer de mode et dépingler des directions qui ont déjà été définies lors dune session précédente. Par exemple, parfois, si jexécute un programme qui définit les broches en sortie, puis que jexécute un programme qui définit les mêmes broches en entrée sans redémarrer le pi, jobtiens un tas davertissements (tels que « RunTimeWarning: Ce canal est déjà dans utilisation »). Ceci est particulièrement problématique lors de lappel de diverses fonctions liées à GPIO à partir dun seul programme, car parfois le programme plante.
Lutilisation de la commande de nettoyage avant ou après la modification des paramètres GPIO supprime les avertissements et permet au code de fonctionner correctement sans aucun avertissement de paramètres GPIO.
Cleanup()
. Il semble que leGPIO.cleanup()
est disponible car la fonctionnalité python tient un journal des modifications afin de nettoyer ces modifications. Voir raspberrypi.stackexchange.com/questions/44807/ …