Warum die GPIO-Pins bereinigen?


13

Warum sollte ich beim Ausführen eines Programms in Python den Bereinigungsbefehl verwenden, wenn ich die GPIOs verwende?


Die WiringPi-Bibliothek, die mit C-Programmen verwendet wird, hat keine Cleanup()Funktion. Es scheint, dass das GPIO.cleanup()verfügbar ist, da die Python-Funktionalität ein Protokoll der Änderungen führt, um diese Änderungen zu bereinigen. Siehe raspberrypi.stackexchange.com/questions/44807/…
Richard Chambers,

Antworten:


14

Wie in diesem Artikel erwähnt, RPi.GPIO-Grundlagen 3 - So beenden Sie GPIO-Programme sauber, vermeiden Warnungen und schützen Ihren Pi . Richtige Verwendung von GPIO.cleanup ().

Richtige Verwendung von GPIO.cleanup ()

RPi.GPIO bietet eine integrierte Funktion GPIO.cleanup (), um alle von Ihnen verwendeten Ports zu bereinigen. Aber sei dir ganz klar, was dies bewirkt. Dies betrifft nur die Ports, die Sie im aktuellen Programm festgelegt haben. Alle in diesem Programm verwendeten Ports werden in den Eingabemodus zurückgesetzt. Dies verhindert beispielsweise Schäden, wenn Sie einen Port auf HIGH als Ausgang eingestellt haben und ihn versehentlich an GND (LOW) anschließen, wodurch der Port kurzgeschlossen und möglicherweise gebraten würde. Die Eingänge können entweder 0 V (LOW) oder 3,3 V (HIGH) verarbeiten, daher ist es sicherer, Ports als Eingänge zu belassen.

Hoffe, es klärt deinen Zweifel.


5

Sie müssen die Bereinigungsmethode nicht verwenden.

Soweit mir bekannt ist, verfügen nur die Python-Module RPi.GPIO und RPIO.GPIO über eine Bereinigungsmethode. Die Bereinigungsmethode setzt alle gpios, die Sie als Eingaben verwendet haben, und deaktiviert die internen Pullups / Downs für diese gpios.

Mein Pigpio-Python-Modul verfügt weder über eine Bereinigungsmethode noch über das WiringPi2-Python-Modul, soweit mir bekannt ist.


Was ist dann der Zweck des Aufräumbefehls?
Mensch

1
@Human Ich glaube nicht, dass es einen Sinn gibt. Ich hätte eine solche Methode hinzugefügt, wenn ich gedacht hätte, dass sie gebraucht wird. Dastaan ​​hat in seiner Antwort auf die Argumentation des RPi.GPIO-Autors hingewiesen. Es mag eher philisophisch sein, ich gehe davon aus, dass Benutzer einen Grund haben, das zu tun, was sie tun oder nicht tun. Wenn sie ein gpio als Eingabe hinterlassen möchten, nachdem das Programm beendet ist, sollten sie es als Eingabe festlegen.
Joan

1

Bei der Verwendung von GPIO sind einige Probleme aufgetreten, hauptsächlich im Zusammenhang mit dem Versuch, Modi und Pin-Richtungen zu ändern, die bereits in einer früheren Sitzung festgelegt wurden. Wenn ich beispielsweise manchmal ein Programm ausführe, das die Pins für die Ausgabe festlegt, und dann ein Programm, das die gleichen Pins für die Eingabe festlegt, ohne den pi neu zu starten, erhalte ich eine Reihe von Warnungen (z. B. "RunTimeWarning: Dieser Kanal ist bereits in" verwenden"). Dies ist besonders problematisch, wenn verschiedene GPIO-bezogene Funktionen von einem einzigen Programm aus aufgerufen werden, da das Programm manchmal abstürzt.

Wenn Sie den Befehl cleanup entweder vor oder nach dem Ändern der GPIO-Einstellungen verwenden, werden die Warnungen beseitigt, und der Code kann problemlos ausgeführt werden, ohne dass Warnungen zu GPIO-Einstellungen auftreten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.