Kiedy uruchamiam program w Pythonie, dlaczego miałbym chcieć polecenie czyszczenia podczas korzystania z GPIO?

Komentarze

  • Na marginesie, biblioteka wirePi używana z programami w języku C nie ma funkcji Cleanup(). Wygląda na to, że jest dostępny, ponieważ funkcja Pythona prowadzi dziennik zmian w celu oczyszczenia tych zmian. Zobacz raspberrypi.stackexchange.com/questions/44807/ …

Odpowiedź

Jak wspomniano w ten artykuł Podstawy RPi.GPIO 3 – Jak czysto wyjść z programów GPIO, unikać ostrzeżeń i chronić swoje Pi , poprawne użycie GPIO.cleanup (),

Poprawne użycie GPIO.cleanup ()

RPi.GPIO udostępnia wbudowaną funkcję GPIO.cleanup () do czyszczenia wszystkich portów, z których korzystałeś. Ale bądź bardzo jasny, co to robi. To tylko af wykrywa wszystkie porty ustawione w bieżącym programie. Resetuje wszystkie porty używane w tym programie z powrotem do trybu wejściowego. Zapobiega to uszkodzeniom, powiedzmy, gdy masz port ustawiony na WYSOKI jako wyjście i przypadkowo podłączysz go do GND (LOW), co spowoduje zwarcie portu i prawdopodobnie go usmaży. 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 to rozwiąże Twoje wątpliwości.

Odpowiedź

Nie musisz używać metody czyszczenia.

O ile mi wiadomo, tylko moduły RPi.GPIO i RPIO.GPIO Python mają metodę czyszczenia. Metoda czyszczenia ustawia wszystkie gpios, których użyłeś jako dane wejściowe i wyłącza wewnętrzne podciągnięcia / spadki dla tych gpios.

Mój moduł Pigpio Python nie ma metody czyszczenia, podobnie jak moduł WirePi2 Python o ile wiem.

Komentarze

  • Jaki jest zatem cel polecenia czyszczenia?
  • @Human I nie ' nie sądzę, że ma to jakiś cel, ' d dodałem taką metodę, jeśli uważałem, że jest potrzebna. dastaan w swojej odpowiedzi wskazał na rozumowanie zastosowane przez autora RPi.GPIO. Może to być bardziej skłonność filizoficzna, zakładam, że użytkownicy mają powód, aby robić to, co robią lub nie ' nie robią. Jeśli chcą zostawić gpio jako dane wejściowe po zakończeniu programu, powinni ustawić je jako dane wejściowe.

Odpowiedź

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

Użycie polecenia cleanup przed lub po zmianie ustawień GPIO usuwa ostrzeżenia i pozwala na płynne działanie kodu bez żadnych ostrzeżeń dotyczących ustawień GPIO.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *