Quando si esegue un programma in Python, perché dovrei volere il comando di pulizia quando si usano i GPIO?

Commenti

  • Come nota a margine, la libreria wiringPi utilizzata con i programmi C non ha una funzione Cleanup(). sembra che GPIO.cleanup() è disponibile perché la funzionalità python conserva un registro delle modifiche per ripulirle. Vedi raspberrypi.stackexchange.com/questions/44807/ …

Risposta

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

Uso corretto di GPIO.cleanup ()

RPi.GPIO fornisce una funzione incorporata GPIO.cleanup () per ripulire tutti i porte che hai usato. Ma sii molto chiaro cosa fa. È solo af controlla tutte le porte impostate nel programma corrente. Ripristina tutte le porte utilizzate in questo programma in modalità di input. Ciò previene i danni, ad esempio, in una situazione in cui si ha una porta impostata su HIGH come uscita e la si collega accidentalmente a GND (LOW), che cortocircuiterebbe la porta e possibilmente la friggerebbe. Gli ingressi possono gestire 0 V (BASSO) o 3,3 V (ALTO), quindi è più sicuro lasciare le porte come ingressi.

Spero che chiarisca i tuoi dubbi.

Risposta

Non è necessario utilizzare il metodo di pulizia.

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

Il mio modulo Python pigpio non ha un metodo di pulizia, nemmeno il modulo WiringPi2 Python per quanto ne so.

Commenti

  • Qual è quindi lo scopo del comando cleanup?
  • @Human I don ' Non credo che ci sia molto di uno scopo, io ' avrei aggiunto un tale metodo se avessi pensato che fosse necessario. dastaan nella sua risposta ha indicato il ragionamento utilizzato dallautore di RPi.GPIO. Potrebbe essere più uninclinazione filosofica, presumo che gli utenti abbiano una ragione per fare ciò che fanno o non ' non fanno. Se vogliono lasciare un GPIO come input al termine del programma, devono impostarlo come input.

Risposta

Ho riscontrato alcuni problemi nellutilizzo di GPIO, principalmente relativi al tentativo di cambiare le modalità e le direzioni dei pin che sono già state impostate in una sessione precedente. Ad esempio, a volte se eseguo un programma che imposta i pin in output, e poi eseguo un programma che imposta gli stessi pin in input senza riavviare il pi, ricevo una serie di avvisi (come “RunTimeWarning: questo canale è già in uso”). Ciò è particolarmente problematico quando si richiamano varie funzioni relative a GPIO da un singolo programma, poiché a volte il programma si blocca.

Luso del comando cleanup prima o dopo la modifica delle impostazioni GPIO elimina gli avvisi e consente al codice di funzionare senza problemi senza che si verifichino avvisi sulle impostazioni GPIO.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *