8

ラズベリー pi で動作するコードに問題があります。Pythonを始めたばかりなので、助けが必要です。

これはコードです:

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

led1=22
led2=17

GPIO.setup(led1, GPIO.OUT)
GPIO.setup(led2, GPIO.OUT)

def blink():
    GPIO.output(led1, 1)
    time.sleep(1)
    GPIO.output(led1, 0)

    GPIO.output(led2, 1)
    time.sleep(1)
    GPIO.output(led2, 0)

while(blink):
    blink()

try:
    main()
except KeyboardInterrupt:
    GPIO.cleanup()

このエラーを実行すると、コンソールに次のように表示されます。

RuntimeWarning: このチャネルは既に使用されていますが、続行しています。警告を無効にするには、GPIO.setwarnings(False) を使用します。GPIO.setup(led1, GPIO.OUT) および:

RuntimeWarning: このチャネルは既に使用されていますが、続行しています。警告を無効にするには、GPIO.setwarnings(False) を使用します。GPIO.setup(led2、GPIO.OUT)

私が正しく理解している場合、コマンドGPIO.cleanup()は GPIO ポートのすべてのピンをリ​​セットし、LED をオフにする必要があります。

しかし、これは実際には起こらず、LED の 1 つが点灯したままです。

この問題を解決するためにコードを変更するにはどうすればよいですか?

4

3 に答える 3

9

mainあなたの質問には含まれていないようです。ただし、プログラムが 以外の何らかの理由で終了すると、問題が発生することがありますKeyboardInterruptfinallyブロック内のリソースを解放することをお勧めします

try:
    main()
except KeyboardInterrupt:
    pass
finally:
    GPIO.cleanup()
于 2014-12-16T04:41:51.443 に答える