Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GPIO设置错误和键盘中断-Python_Python_Raspberry Pi_Raspbian_Gpio_Keyboardinterrupt - Fatal编程技术网

GPIO设置错误和键盘中断-Python

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

我已经写了一个代码,打开一个继电器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) 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()