GPIO设置错误和键盘中断-Python
我已经写了一个代码,打开一个继电器2秒钟,然后关闭,但我有问题 首先,程序运行时出现以下错误,但GPIO已设置:GPIO设置错误和键盘中断-Python,python,raspberry-pi,raspbian,gpio,keyboardinterrupt,Python,Raspberry Pi,Raspbian,Gpio,Keyboardinterrupt,我已经写了一个代码,打开一个继电器2秒钟,然后关闭,但我有问题 首先,程序运行时出现以下错误,但GPIO已设置: `Traceback (most recent call last): File "relay_control.py", line 16, in <module> GPIO.output(2, GPIO.HIGH) RuntimeError: Please set pin numbering mode using GPIO.setmode(GPIO.BOARD
`Traceback (most recent call last):
File "relay_control.py", line 16, in <module>
GPIO.output(2, GPIO.HIGH)
RuntimeError: Please set pin numbering mode using GPIO.setmode(GPIO.BOARD) or GPIO.setmode(GPIO.BCM)`
我不确定出了什么问题,完整代码如下:
import RPi.GPIO as GPIO
from time import sleep
GPIO.setmode(GPIO.BCM)
# Set relay pins as output
GPIO.setup(2, GPIO.OUT)
GPIO.setup(3, GPIO.OUT)
GPIO.setup(4, GPIO.OUT)
GPIO.setup(17, GPIO.OUT)
while (True):
# Turn all relays ON
GPIO.output(2, GPIO.HIGH)
GPIO.output(3, GPIO.HIGH)
GPIO.output(4, GPIO.HIGH)
GPIO.output(17, GPIO.HIGH)
# Sleep for 5 seconds
sleep(2)
# Turn all relays OFF
GPIO.output(2, GPIO.LOW)
GPIO.output(3, GPIO.LOW)
GPIO.output(4, GPIO.LOW)
GPIO.output(17, GPIO.LOW)
# Sleep for 5 seconds
sleep(2)
except KeyboardInterrupt:
print "Quit"
GPIO.cleanup()
不知何故,修复键盘中断不会产生任何错误:
import RPi.GPIO as GPIO
from time import sleep
# The script as below using BCM GPIO 00..nn numbers
GPIO.setmode(GPIO.BCM)
# Set relay pins as output
GPIO.setup(2, GPIO.OUT)
GPIO.setup(3, GPIO.OUT)
GPIO.setup(4, GPIO.OUT)
GPIO.setup(17, GPIO.OUT)
try:
while (True):
# Turn all relays ON
GPIO.output(2, GPIO.HIGH)
GPIO.output(3, GPIO.HIGH)
GPIO.output(4, GPIO.HIGH)
GPIO.output(17, GPIO.HIGH)
# Sleep for 5 seconds
sleep(2)
# Turn all relays OFF
GPIO.output(2, GPIO.LOW)
GPIO.output(3, GPIO.LOW)
GPIO.output(4, GPIO.LOW)
GPIO.output(17, GPIO.LOW)
# Sleep for 5 seconds
sleep(2)
except KeyboardInterrupt:
print "Quit"
GPIO.cleanup()
这是正确的代码:
import RPi.GPIO as GPIO
from time import sleep
GPIO.setmode(GPIO.BCM)
# Set relay pins as output
GPIO.setup(2, GPIO.OUT)
GPIO.setup(3, GPIO.OUT)
GPIO.setup(4, GPIO.OUT)
GPIO.setup(17, GPIO.OUT)
while (True):
try:
# Turn all relays ON
GPIO.output(2, GPIO.HIGH)
GPIO.output(3, GPIO.HIGH)
GPIO.output(4, GPIO.HIGH)
GPIO.output(17, GPIO.HIGH)
# Sleep for 5 seconds
sleep(2)
# Turn all relays OFF
GPIO.output(2, GPIO.LOW)
GPIO.output(3, GPIO.LOW)
GPIO.output(4, GPIO.LOW)
GPIO.output(17, GPIO.LOW)
# Sleep for 5 seconds
sleep(2)
except KeyboardInterrupt:
print "Quit"
GPIO.cleanup()
对于第二期,您有一个
except
语句,但没有try
语句,请参阅:Thank you@BelowtheRadar似乎已修复了所有问题,我现在没有收到任何错误。
import RPi.GPIO as GPIO
from time import sleep
GPIO.setmode(GPIO.BCM)
# Set relay pins as output
GPIO.setup(2, GPIO.OUT)
GPIO.setup(3, GPIO.OUT)
GPIO.setup(4, GPIO.OUT)
GPIO.setup(17, GPIO.OUT)
while (True):
try:
# Turn all relays ON
GPIO.output(2, GPIO.HIGH)
GPIO.output(3, GPIO.HIGH)
GPIO.output(4, GPIO.HIGH)
GPIO.output(17, GPIO.HIGH)
# Sleep for 5 seconds
sleep(2)
# Turn all relays OFF
GPIO.output(2, GPIO.LOW)
GPIO.output(3, GPIO.LOW)
GPIO.output(4, GPIO.LOW)
GPIO.output(17, GPIO.LOW)
# Sleep for 5 seconds
sleep(2)
except KeyboardInterrupt:
print "Quit"
GPIO.cleanup()