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

时间:2014-06-15 03:32:44

标签: python raspberry-pi raspbian gpio

所以我有一个小小的风扇连接到引脚6(接地)和引脚2.我试图在需要时手动启动和停止风扇,但我在尝试时收到此错误:

ValueError:在Raspberry Pi上发送的频道无效

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

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BOARD)

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

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

4 个答案:

答案 0 :(得分:18)

这可能是一些愚蠢的事情,我看起来确实相同。 GPIO似乎有两种模式。 将GPIO.setmode(GPIO.BOARD)更改为

GPIO.setmode(GPIO.BCM) 

在Raspbian的干净安装中它对我有用

答案 1 :(得分:1)

你不能。 Raspberry Pi扩展接头的引脚2直接连接到USB电源 - 它不受CPU控制。

请勿尝试将风扇直接连接到GPIO引脚;它们不仅没有输出正确的电压,而且它们也不能提供/吸收足够的电流来运行风扇。试图这样做很可能会破坏引脚驱动器,也可能会损坏BCM2835的其他部分。

如果您需要打开和关闭5V风扇,您需要一些支持硬件来控制它(例如,FET)。

答案 2 :(得分: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)

答案 3 :(得分:0)

在GPIO.BOARD模式下,引脚2为5V,无法设置。

在将其转换为GPIO.BCM模式时,实际上是GPIO2。