Pourquoi nettoyer les broches GPIO?


13

Lors de l'exécution d'un programme en Python, pourquoi voudrais-je la commande de nettoyage lors de l'utilisation des GPIO?


En remarque, la bibliothèque de câblagePi utilisée avec les programmes C n'a pas de Cleanup()fonction. il semble que le GPIO.cleanup()soit disponible car la fonctionnalité python conserve un journal des modifications afin de nettoyer ces modifications. Voir raspberrypi.stackexchange.com/questions/44807/…
Richard Chambers

Réponses:


14

Comme mentionné dans cet article Notions de base de RPi.GPIO 3 - Comment quitter les programmes GPIO proprement, é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 ports que vous avez utilisés. Mais soyez très clair sur ce que cela fait. Il n'affecte que 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 d'entrée. Cela empêche les dommages causés, par exemple, par une situation où vous avez défini un port HAUT comme sortie et que vous le connectez accidentellement à GND (LOW), ce qui court-circuiterait le port et le ferait frire. Les entrées peuvent gérer 0V (LOW) ou 3,3V (HIGH), il est donc plus sûr de laisser les ports comme entrées.

J'espère que cela efface votre doute.


5

Vous n'avez pas besoin d'utiliser la méthode de nettoyage.

Pour autant que je sache, seuls les modules RPi.GPIO et RPIO.GPIO Python 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 tractions / descentes internes pour ces gpios.

Mon module pigpio Python n'a pas de méthode de nettoyage, ni le module de câblage Python Pi2 à ma connaissance.


Quel est alors le but de la commande de nettoyage?
Human

1
@Human Je ne pense pas qu'il y ait beaucoup d'utilité, j'aurais ajouté une telle méthode si je pensais que c'était nécessaire. dastaan ​​dans sa réponse a souligné le raisonnement utilisé par l'auteur RPi.GPIO. Il peut s'agir davantage d'un penchant philisophique, je suppose que les utilisateurs ont une raison de faire ce qu'ils font ou ne font pas. S'ils veulent laisser un gpio en entrée une fois le programme terminé, ils doivent le définir en entrée.
joan

1

J'ai rencontré quelques problèmes avec GPIO, principalement liés à la tentative de changer les modes et les directions des broches qui ont déjà été définis lors d'une session précédente. Par exemple, parfois, si j'exécute un programme qui définit des broches à la sortie, puis que j'exécute un programme qui définit les mêmes broches à l'entrée sans redémarrer le pi, j'obtiens un tas d'avertissements (tels que "RunTimeWarning: ce canal est déjà en utilisation"). Cela est particulièrement problématique lors de l'appel de diverses fonctions liées à GPIO à partir d'un seul programme, car parfois le programme se bloque.

L'utilisation de la commande de nettoyage avant ou après la modification des paramètres GPIO supprime les avertissements et permet au code de s'exécuter sans aucun avertissement de paramètres GPIO.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.