Po co porządkować piny GPIO?

13

Po uruchomieniu programu w Pythonie, dlaczego miałbym chcieć polecenia czyszczenia podczas korzystania z GPIO?

Człowiek
źródło
Na marginesie, biblioteka wiringPi używana w programach C nie ma żadnej Cleanup()funkcji. wygląda na to, że GPIO.cleanup()jest dostępny, ponieważ funkcjonalność Pythona prowadzi dziennik zmian w celu ich wyczyszczenia. Zobacz raspberrypi.stackexchange.com/questions/44807/...
Richard Chambers

Odpowiedzi:

14

Jak wspomniano w tym artykule Podstawy RPi.GPIO 3 - Jak w czysty sposób wyjść z programów GPIO, unikać ostrzeżeń i chronić swoje Pi , poprawne użycie GPIO.cleanup (),

Prawidłowe użycie GPIO.cleanup ()

RPi.GPIO zapewnia wbudowaną funkcję GPIO.cleanup () do czyszczenia wszystkich używanych portów. Ale wyjaśnij, co to robi. Wpływa tylko na porty ustawione w bieżącym programie. Resetuje wszystkie porty używane w tym programie z powrotem do trybu wprowadzania. Zapobiega to uszkodzeniom, powiedzmy, w sytuacji, gdy masz port WYSOKI jako wyjście i przypadkowo podłączasz go do GND (NISKI), co spowodowałoby zwarcie portu i prawdopodobnie jego usmażenie. Wejścia mogą obsługiwać 0 V (NISKIE) lub 3,3 V (WYSOKIE), więc bezpieczniej jest pozostawić porty jako wejścia.

Mam nadzieję, że rozwiąże to twoje wątpliwości.

dhruvvyas90
źródło
5

Nie musisz używać metody czyszczenia.

O ile mi wiadomo, tylko moduły Python RPi.GPIO i RPIO.GPIO mają metodę czyszczenia. Metoda czyszczenia ustawia wszystkie gpios, które kiedyś były wejściami, i wyłącza wewnętrzne podciągania / obniżania dla tych gpi.

Mój Pigpio moduł Python nie ma metody czyszczenia, podobnie jak moduł Python wiringPi2, o ile mi wiadomo.

joan
źródło
Jaki jest zatem cel polecenia czyszczenia?
Człowiek,
1
@Human, nie sądzę, że ma to jakiś cel, dodałbym taką metodę, gdybym uważał, że jest ona potrzebna. dastaan ​​w swojej odpowiedzi wskazał na rozumowanie zastosowane przez autora RPi.GPIO. To może być bardziej filozoficzne, zakładam, że użytkownicy mają powód do robienia tego, co robią lub czego nie robią. Jeśli chcą zostawić gpio jako dane wejściowe po zakończeniu programu, powinny je ustawić jako dane wejściowe.
joan
1

Podczas korzystania z GPIO napotkałem kilka problemów, głównie związanych z próbą zmiany trybów i kierowania pinów, które zostały już ustawione w poprzedniej sesji. Na przykład czasami, gdy uruchamiam program, który ustawia piny na wyjście, a następnie uruchamiam program, który ustawia te same piny na wejście bez restartowania pi, pojawia się kilka ostrzeżeń (takich jak „RunTimeWarning: ten kanał jest już w posługiwać się"). Jest to szczególnie problematyczne w przypadku wywoływania różnych funkcji związanych z GPIO z jednego programu, ponieważ czasami program ulega awarii.

Użycie polecenia czyszczenia przed lub po zmianie ustawień GPIO pozbywa się ostrzeżeń i pozwala na płynne działanie kodu bez ostrzeżeń o ustawieniach GPIO.

Dave
źródło