Por que limpar os pinos do GPIO?

13

Ao executar um programa em Python, por que eu desejaria o comando de limpeza ao usar os GPIOs?

Humano
fonte
Como observação lateral, a biblioteca de fiaçãoPi usada com programas C não possui uma Cleanup()função. parece que GPIO.cleanup()está disponível porque a funcionalidade python mantém um log de alterações para limpar essas alterações. Veja raspberrypi.stackexchange.com/questions/44807/…
Richard Chambers,

Respostas:

14

Conforme mencionado neste artigo, noções básicas do RPi.GPIO 3 - Como sair de programas GPIO de forma limpa, evitar avisos e proteger seu Pi , uso correto de GPIO.cleanup (),

Uso correto de GPIO.cleanup ()

O RPi.GPIO fornece uma função interna GPIO.cleanup () para limpar todas as portas que você usou. Mas seja muito claro o que isso faz. Afeta apenas as portas que você definiu no programa atual. Redefine todas as portas que você usou neste programa de volta ao modo de entrada. Isso evita danos causados, digamos, por uma situação em que você tem uma porta definida como ALTA como saída e a conecta acidentalmente ao GND (LOW), o que poderia causar um curto-circuito na porta e possivelmente fritá-la. As entradas podem suportar 0V (LOW) ou 3.3V (HIGH), por isso é mais seguro deixar as portas como entradas.

Espero que tire sua dúvida.

dhruvvyas90
fonte
5

Você não precisa usar o método de limpeza.

Tanto quanto sei, apenas os módulos RPi.GPIO e RPIO.GPIO Python têm um método de limpeza. O método de limpeza define todos os gpios que você usou como entradas e desativa os pull-ups / downs internos desses gpios.

Meu módulo Python pigpio não possui um método de limpeza, nem o módulo fiação Python Python, até onde eu saiba.

joan
fonte
Qual é o objetivo do comando cleanup?
Human
1
@ Humano Eu não acho que exista muito de um objetivo, eu teria adicionado esse método se achasse que era necessário. dastaan ​​em sua resposta apontou para o raciocínio usado pelo autor do RPi.GPIO. Pode ser mais uma tendência filisófica, presumo que os usuários tenham uma razão para fazer o que fazem ou não. Se eles quiserem deixar um gpio como entrada após o término do programa, devem defini-lo como entrada.
Joan
1

Encontrei alguns problemas ao usar o GPIO, principalmente relacionados à tentativa de alterar modos e fixar direções que já foram definidas em uma sessão anterior. Por exemplo, às vezes, se eu executar um programa que define pinos para a saída e, em seguida, executar um programa que define os mesmos pinos para entrada sem reiniciar o pi, recebo vários avisos (como "RunTimeWarning: este canal já está em usar"). Isso é especialmente problemático ao chamar várias funções relacionadas ao GPIO a partir de um único programa, pois às vezes o programa trava.

O uso do comando de limpeza antes ou depois da alteração das configurações do GPIO elimina os avisos e permite que o código seja executado sem problemas, sem que ocorram avisos de configurações do GPIO.

Dave
fonte