Când rulez un program în Python, de ce aș dori comanda de curățare când folosesc GPIO-urile?
Comentarii
Răspuns
După cum sa menționat în acest articol Noțiuni de bază despre RPi.GPIO 3 – Cum să ieșiți curat din programele GPIO, să evitați avertismentele și să vă protejați Pi , utilizarea corectă a GPIO.cleanup (),
Utilizarea corectă a GPIO.cleanup ()
RPi.GPIO oferă o funcție încorporată GPIO.cleanup () pentru a curăța toate porturile pe care le-ați folosit. Dar fiți foarte clar ce face acest lucru adaptează orice porturi pe care le-ați setat în programul curent. Resetează orice porturi pe care le-ați folosit în acest program înapoi la modul de intrare. Acest lucru previne deteriorarea, să zicem, dintr-o situație în care aveți un port setat HIGH ca ieșire și îl conectați din greșeală la GND (LOW), ceea ce ar scurta circuitul portului și, eventual, îl va prăji. Intrările pot gestiona fie 0V (LOW), fie 3,3V (HIGH), deci este mai sigur să lăsați porturile ca intrări.
Sper că vă șterge îndoielile.
Răspuns
Nu trebuie să utilizați metoda de curățare.
Din câte știu modulele RPi.GPIO și RPIO.GPIO Python au o metodă de curățare. Metoda de curățare setează toate gpios-urile pe care le-ați folosit ca intrări și dezactivează pull-up-urile / coborârile interne pentru acele gpios.
Modulul meu Python pigpio nu are o metodă de curățare, nici modulul wiringPi2 Python nu are din câte știu.
Comentarii
- Care este scopul comenzii de curățare atunci?
- @Human I nu ' nu cred că există mult scop, eu ' am adăugat o astfel de metodă dacă am crezut că este nevoie. dastaan în răspunsul său a arătat raționamentul folosit de autorul RPi.GPIO. S-ar putea să fie mai degrabă o îndoială filisofică, presupun că utilizatorii au un motiv pentru a face ceea ce fac sau nu fac ' t. Dacă vor să lase un gpio ca intrare după terminarea programului, ar trebui să-l seteze ca intrare.
Răspuns
Am întâmpinat câteva probleme la utilizarea GPIO, în principal legate de încercarea de a schimba modurile și direcțiile de fixare care au fost deja setate într-o sesiune anterioară. De exemplu, uneori, dacă rulez un program care setează pinii la ieșire și apoi rulez un program care setează aceiași pinii la intrare fără a reporni pi, primesc o grămadă de avertismente (cum ar fi „RunTimeWarning: acest canal este deja în utilizare”). Acest lucru este deosebit de problematic atunci când se apelează diverse funcții legate de GPIO dintr-un singur program, deoarece uneori programul se blochează.
Utilizarea comenzii de curățare, înainte sau după modificarea setărilor GPIO, scapă de avertismente și permite codului să ruleze fără probleme, fără să apară avertismente privind setările GPIO.
Cleanup()
. se pare căGPIO.cleanup()
este disponibil deoarece funcționalitatea python păstrează un jurnal al modificărilor pentru a curăța acele modificări. Consultați raspberrypi.stackexchange.com/questions/44807/ …