Ao executar um programa em Python, por que desejaria o comando de limpeza ao usar os GPIO “s?

Comentários

  • Como observação lateral, a biblioteca wiringPi usada com programas C não tem uma função Cleanup(). Parece que o GPIO.cleanup() está disponível porque a funcionalidade Python mantém um registro das alterações para limpar essas alterações. Consulte raspberrypi.stackexchange.com/questions/44807/ …

Resposta

Conforme mencionado em este artigo Noções básicas de 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 ()

RPi.GPIO fornece uma função interna GPIO.cleanup () para limpar todos os portas que você usou. Mas deixe bem claro o que isso faz. afeta todas as portas que você configurou no programa atual. Ele redefine quaisquer portas que você usou neste programa de volta ao modo de entrada. Isso evita danos em, digamos, uma situação em que você tenha uma porta definida como HIGH como saída e acidentalmente conecte-a ao GND (LOW), o que causaria um curto-circuito na porta e possivelmente a fritaria. As entradas podem lidar com 0 V (BAIXO) ou 3,3 V (ALTO), por isso é mais seguro deixar as portas como entradas.

Espero que esclareça suas dúvidas.

Resposta

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

Até onde eu sei, apenas os módulos RPi.GPIO e RPIO.GPIO Python possuem 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 para esses gpios.

Meu módulo Python pigpio não tem um método de limpeza, nem o módulo Python wiringPi2 tanto quanto eu sei.

Comentários

  • Qual é então o propósito do comando de limpeza?
  • @Human I não ' ache que haja um propósito, eu ' teria adicionado esse método se achasse que fosse necessário. dastaan em sua resposta apontou para o raciocínio usado pelo autor RPi.GPIO. Pode ser mais uma inclinação filosófica, presumo que os usuários tenham uma razão para fazer o que fazem ou ' não fazem. Se eles quiserem deixar um gpio como uma entrada após a conclusão do programa, eles devem defini-lo como uma entrada.

Resposta

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

Usar o comando de limpeza antes ou depois de alterar as configurações de GPIO elimina os avisos e permite que o código seja executado sem problemas, sem que ocorram quaisquer avisos de configurações de GPIO.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *