ValueError:在Raspberry Pi上发送的通道无效 - 使用Python控制GPIO引脚2(BOARD)时发生错误

11 投票
4 回答
57771 浏览
提问于 2025-04-18 09:49

我有一个小风扇,连接在引脚6(接地)和引脚2上。我想手动启动和停止这个风扇,但在尝试的时候遇到了这个错误:

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

这是我以管理员身份执行的代码。它在其他引脚上似乎可以正常工作,但在引脚2上不行。

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BOARD)

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

我不太确定怎么访问这个引脚。我是不是做错了什么?

4 个回答

0

在GPIO.BOARD模式下,针脚2是5伏电压,这个是不能设置的。

而当你把它转换成GPIO.BCM模式时,它实际上是GPIO2。

0

你不能这么做。树莓派的扩展接口的第2脚直接连接到USB电源——它并不是由CPU控制的。

不要试着把风扇直接连接到GPIO引脚;不仅因为它们输出的电压不对,而且它们也无法提供足够的电流来驱动风扇。这样做很可能会损坏引脚的驱动器,甚至可能会对BCM2835的其他部分造成损害。

如果你想控制一个5V的风扇开关,你需要一些额外的硬件来帮助控制它(比如一个FET)。

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)
32

这可能是个简单的问题,我也遇到过类似的情况。看起来GPIO有两种模式。你可以把 GPIO.setmode(GPIO.BOARD) 改成

GPIO.setmode(GPIO.BCM) 

在我干净安装的Raspbian系统上,这样做是有效的。

撰写回答