Pythonでプログラムを実行しているときに、GPIOを使用するときにクリーンアップコマンドが必要なのはなぜですか?
コメント
回答
この記事 RPi.GPIOの基本3– GPIOプログラムをクリーンに終了し、警告を回避してPiを保護する方法、GPIO.cleanup()の正しい使用
GPIO.cleanup()の正しい使用
RPi.GPIOには、すべてのクリーンアップを行う組み込み関数GPIO.cleanup()が用意されています。使用したポートですが、これが何をするのかを明確にしてください。現在のプログラムで設定したすべてのポートに影響します。このプログラムで使用したポートを入力モードにリセットします。これにより、たとえば、出力としてポートをHIGHに設定し、誤ってGND(LOW)に接続してポートを短絡させ、場合によっては揚げるような状況による損傷を防ぐことができます。入力は0V(LOW)または3.3V(HIGH)のいずれかを処理できるため、ポートを入力のままにしておく方が安全です。
疑問が解消されることを願っています。
回答
クリーンアップ方法を使用する必要はありません。
私が知っている限りではRPi.GPIOおよびRPIO.GPIOPythonモジュールにはクリーンアップメソッドがあります。クリーンアップメソッドは、入力として使用したすべてのgpiosを設定し、それらのgpiosの内部プルアップ/ダウンを無効にします。
私のpigpioPythonモジュールにはクリーンアップメソッドがなく、wiringPi2Pythonモジュールもありません。私の知る限り。
コメント
- クリーンアップコマンドの目的は何ですか?
- @Human I '目的はあまりないと思いますが、必要だと思ったら、'このようなメソッドを追加しました。 dastaanは彼の答えの中で、RPi.GPIOの作者が使用した推論を指摘しています。それはもっと哲学的な傾向かもしれません、私はユーザーが彼らがすることをする理由があるか、またはしない理由があると思います'。プログラムの終了後にgpioを入力として残したい場合は、入力として設定する必要があります。
回答
GPIOの使用中にいくつかの問題が発生しました。主に、前のセッションですでに設定されているモードとピンの方向を変更しようとしたことに関連しています。たとえば、ピンを出力に設定するプログラムを実行した後、piを再起動せずに同じピンを入力に設定するプログラムを実行すると、一連の警告が表示されることがあります(「RunTimeWarning:このチャネルはすでに使用する”)。これは、プログラムがクラッシュすることがあるため、単一のプログラムからさまざまなGPIO関連関数を呼び出す場合に特に問題になります。
GPIO設定を変更する前または後にcleanupコマンドを使用すると、警告が削除され、GPIO設定の警告が発生することなくコードをスムーズに実行できます。
Cleanup()
関数がありません。GPIO.cleanup()
は、Python機能が変更をクリーンアップするために変更のログを保持するために使用できます。 raspberrypi.stackexchange.com/questions/44807/を参照してください。 …