GPIOピンをクリーンアップする理由


13

Pythonでプログラムを実行する場合、GPIOを使用するときにクリーンアップコマンドが必要なのはなぜですか?


サイドノートとして、Cプログラムで使用されるwiringPiライブラリにはCleanup()機能がありません。GPIO.cleanup()python機能は変更のログを保持してこれらの変更をクリーンアップするため、が利用可能であるようです。raspberrypi.stackexchange.com/questions/44807/…を
リチャードチェンバーズ

回答:


14

この記事で説明したように、RPi.GPIOの基本3 – GPIOプログラムをきれいに終了し、警告を避けてPiを保護する方法、GPIO.cleanup()の正しい使用、

GPIO.cleanup()の正しい使用

RPi.GPIOは、使用したすべてのポートをクリーンアップする組み込み関数GPIO.cleanup()を提供します。しかし、これが何をするのかを非常に明確にしてください。現在のプログラムで設定したポートのみに影響します。このプログラムで使用したポートをリセットして入力モードに戻します。これにより、たとえば、ポートを出力としてHIGHに設定し、誤ってポートをGND(LOW)に接続して、ポートを短絡させ、場合によってはフライするような状況からの損傷を防ぎます。入力は0V(低)または3.3V(高)のいずれかを処理できるため、ポートを入力のままにしておく方が安全です。

それがあなたの疑念をクリアすることを願っています。


5

クリーンアップ方法を使用する必要はありません。

私が知る限り、RPi.GPIOおよびRPIO.GPIO Pythonモジュールのみがクリーンアップメソッドを持っています。cleanupメソッドは、入力に使用していたすべてのgpiosを設定し、それらのgpiosの内部プルアップ/ダウンを無効にします。

私のpigpio Pythonモジュールにはクリーンアップメソッドがありません。また、私が知っている限り、wiringPi2 Pythonモジュールもありません。


クリーンアップコマンドの目的は何ですか?
人間

1
@Human目的はあまりないと思います。必要だと思ったら、そのような方法を追加したでしょう。dastaan​​は、RPi.GPIO作成者が使用した推論を指摘しています。それはもっと哲学的な傾向かもしれません、私はユーザーが彼らがすること、しないことをする理由があると思います。プログラムの終了後にgpioを入力として残したい場合は、入力として設定する必要があります。
ジョアン

1

GPIOを使用して、主に前のセッションで既に設定されているモードとピンの方向を変更しようとすることに関連するいくつかの問題に遭遇しました。たとえば、ピンを出力に設定するプログラムを実行し、piを再起動せずに同じピンを入力に設定するプログラムを実行すると、多くの警告が表示されます(「RunTimeWarning:このチャネルは既に使用する")。これは、プログラムがクラッシュすることがあるため、単一のプログラムからさまざまなGPIO関連の関数を呼び出すときに特に問題になります。

GPIO設定を変更する前または後にクリーンアップコマンドを使用すると、警告がなくなり、GPIO設定の警告が発生することなくコードをスムーズに実行できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.