¿Por qué limpiar los pines GPIO?

13

Al ejecutar un programa en Python, ¿por qué querría el comando de limpieza al usar los GPIO?

Humano
fuente
Como nota al margen, la biblioteca cableadoPi utilizada con los programas en C no tiene una Cleanup()función. parece que GPIO.cleanup()está disponible porque la funcionalidad de Python mantiene un registro de cambios para limpiar esos cambios. Ver raspberrypi.stackexchange.com/questions/44807/…
Richard Chambers

Respuestas:

14

Como se menciona en este artículo, RPi.GPIO nociones básicas 3: cómo salir de los programas GPIO de forma limpia, evitar advertencias y proteger su Pi , el uso correcto de GPIO.cleanup (),

Uso correcto de GPIO.cleanup ()

RPi.GPIO proporciona una función incorporada GPIO.cleanup () para limpiar todos los puertos que ha utilizado. Pero sea muy claro lo que esto hace. Solo afecta a cualquier puerto que haya configurado en el programa actual. Restablece cualquier puerto que haya utilizado en este programa de nuevo al modo de entrada. Esto evita el daño de, por ejemplo, una situación en la que tiene un puerto configurado en ALTO como salida y accidentalmente lo conecta a GND (BAJO), lo que podría provocar un cortocircuito en el puerto y posiblemente freírlo. Las entradas pueden manejar 0V (BAJO) o 3.3V (ALTO), por lo que es más seguro dejar los puertos como entradas.

Espero que aclare tu duda.

dhruvvyas90
fuente
5

No tiene que usar el método de limpieza.

Hasta donde yo sé, solo los módulos Python RPi.GPIO y RPIO.GPIO tienen un método de limpieza. El método de limpieza establece todas las gpios que ha utilizado como entradas y deshabilita los pull-ups / down internos para esas gpios.

Mi módulo pigpio Python no tiene un método de limpieza, ni el módulo cableado Python, por lo que yo sé.

joan
fuente
¿Cuál es el propósito del comando de limpieza entonces?
Humano
1
@ Humano No creo que haya un gran propósito, habría agregado dicho método si pensara que era necesario. Dastaan ​​en su respuesta ha señalado el razonamiento utilizado por el autor RPi.GPIO. Puede ser más una inclinación filosófica, supongo que los usuarios tienen una razón para hacer lo que hacen o no hacen. Si quieren dejar un gpio como entrada después de que finalice el programa, deben configurarlo como entrada.
joan
1

He encontrado algunos problemas al usar GPIO, principalmente relacionados con el intento de cambiar los modos y las direcciones de pin que ya se han establecido en una sesión anterior. Por ejemplo, a veces si ejecuto un programa que establece los pines para la salida, y luego ejecuto un programa que establece los mismos pines para ingresar sin reiniciar el pi, recibo un montón de advertencias (como "RunTimeWarning: este canal ya está en utilizar"). Esto es especialmente problemático cuando se llaman varias funciones relacionadas con GPIO desde un solo programa, ya que a veces el programa se bloquea.

El uso del comando de limpieza antes o después de cambiar la configuración de GPIO elimina las advertencias y permite que el código se ejecute sin problemas sin que ocurra ninguna advertencia de configuración de GPIO.

Dave
fuente