Perché pulire i pin GPIO?


13

Quando eseguo un programma in Python, perché dovrei desiderare il comando cleanup quando uso i GPIO?


Come nota a margine, la libreria cablaggioPi utilizzata con i programmi C non ha una Cleanup()funzione. sembra che GPIO.cleanup()sia disponibile perché la funzionalità python mantiene un registro delle modifiche per ripulire tali modifiche. Vedi raspberrypi.stackexchange.com/questions/44807/…
Richard Chambers,

Risposte:


14

Come menzionato in questo articolo Nozioni di base di RPi.GPIO 3 - Come uscire in modo pulito dai programmi GPIO, evitare avvisi e proteggere il tuo Pi , usare correttamente GPIO.cleanup (),

Uso corretto di GPIO.cleanup ()

RPi.GPIO fornisce una funzione integrata GPIO.cleanup () per ripulire tutte le porte utilizzate. Ma sii chiaro cosa fa questo. Influisce solo su tutte le porte impostate nel programma corrente. Ripristina tutte le porte utilizzate in questo programma in modalità di input. Questo impedisce, per esempio, un danno in una situazione in cui si dispone di una porta impostata su ALTA come uscita e la si collega accidentalmente a GND (BASSO), che potrebbe cortocircuitare la porta e probabilmente friggerla. Gli ingressi possono gestire 0 V (BASSO) o 3,3 V (ALTO), quindi è più sicuro lasciare le porte come ingressi.

Spero che cancella il tuo dubbio.


5

Non è necessario utilizzare il metodo di pulizia.

Per quanto ne so, solo i moduli RPi.GPIO e RPIO.GPIO Python hanno un metodo di pulizia. Il metodo di pulizia imposta tutti i gpi che hai usato per essere input e disabilita i pull-up / down interni per quei gpios.

Il mio modulo Python pigpio non ha un metodo di pulizia, né il modulo cablaggio Pi2 Python per quanto ne so.


Qual è lo scopo del comando cleanup allora?
Umano

1
@Uomo Non penso che ci sia uno scopo, avrei aggiunto un tale metodo se pensassi che fosse necessario. Dastaan ​​nella sua risposta ha indicato il ragionamento usato dall'autore RPi.GPIO. Potrebbe essere più una tendenza filosofica, presumo che gli utenti abbiano una ragione per fare ciò che fanno o non fanno. Se vogliono lasciare un gpio come input al termine del programma, devono impostarlo come input.
joan

1

Ho riscontrato alcuni problemi con GPIO, principalmente relativi al tentativo di cambiare modalità e direzioni dei pin che sono già stati impostati in una sessione precedente. Ad esempio, a volte se eseguo un programma che imposta i pin per l'output e quindi eseguo un programma che imposta gli stessi pin per l'input senza riavviare il pi, ricevo un sacco di avvisi (come "RunTimeWarning: questo canale è già in uso"). Ciò è particolarmente problematico quando si chiamano varie funzioni relative a GPIO da un singolo programma, poiché a volte il programma si arresta in modo anomalo.

L'uso del comando cleanup prima o dopo aver modificato le impostazioni GPIO elimina gli avvisi e consente al codice di funzionare senza problemi senza che si verifichino avvisi relativi alle impostazioni GPIO.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.