数值错误:在树莓派上使用Python控制GPIO引脚2(BOARD)时发送的通道无效,导致错误。

11

我连接了一个小型风扇到GPIO引脚6(Ground)和2。我尝试手动启停风扇,但是当我尝试时出现以下错误:

ValueError: 在树莓派上发送的通道是无效的

这是我正在以root用户身份执行的代码。它似乎在其他引脚上工作正常,但不适用于引脚2。

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BOARD)

GPIO.setup(2, GPIO.OUT, pull_up_down=GPIO.PUD_UP)

我不确定如何访问此引脚。我是否做错了什么?

4个回答

32

可能是我做了一些傻事,因为我看起来完全相同。GPIO 似乎有两种模式。将 GPIO.setmode(GPIO.BOARD) 更改为

GPIO.setmode(GPIO.BCM) 

在一个全新的 Raspbian 安装上这对我起作用了。


这对我也起作用了。但请删除“强调文本”。 - sudocoder
迟做总比不做好。 - Jesus Cepeda
这是我的错误。我感觉很愚蠢! - Phil
2
这里提供了一个解决问题的上下文:https://raspberrypi.stackexchange.com/questions/12966/what-is-the-difference-between-board-and-bcm-for-gpio-pin-numbering - NJTabit
我很久没看到这个评论了,解决了我的疑惑。谢谢。 - Jesus Cepeda

1
我认为你的错误在于将pull_up_down应用于一个OUT定义的引脚。
#this is only for input pins
GPIO.setup(n, RPIO.OUT, initial=RPIO.LOW, pull_up_down=GPIO.PUD_UP)

#CORRECT ("initial" is optional)
GPIO.setup(n, RPIO.OUT, initial=RPIO.LOW)

0
在GPIO.BOARD模式下,引脚2是5V,无法设置。
当将其转换为GPIO.BCM模式时,它实际上是GPIO2。

0
您无法这样做。树莓派扩展头的引脚2直接连接到USB电源,不受CPU控制。
不要尝试将风扇直接连接到GPIO引脚;它们不仅不能输出正确的电压,而且也无法提供/吸收足够的电流来驱动风扇。尝试这样做很可能会破坏引脚驱动器,并可能对BCM2835的其他部分造成损坏。
如果您需要打开和关闭5V风扇,则需要一些支持硬件来控制它(例如,一个场效应管)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接