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

Posted

技术标签:

【中文标题】ValueError:发送的通道在 Raspberry Pi 上无效 - 使用 Python 控制 GPIO Pin 2 (BOARD) 会导致错误【英文标题】:ValueError: The channel sent is invalid on a Raspberry Pi - Controlling GPIO Pin 2 (BOARD) using Python causes Error 【发布时间】:2014-08-05 06:03:09 【问题描述】:

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

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

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

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BOARD)

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

我不确定如何访问此图钉。是不是我做错了什么?

【问题讨论】:

【参考方案1】:

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

GPIO.setmode(GPIO.BCM) 

它在 Raspbian 的全新安装上对我有用

【讨论】:

这也对我有用。但请删除“强调文字” 已删除。迟到总比没有好 这是我的错误。我觉得自己很笨! 解决问题的原因:raspberrypi.stackexchange.com/questions/12966/… 隔了好久才看到最后一条评论,解决了我的疑惑。谢谢【参考方案2】:

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

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

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

【讨论】:

【参考方案3】:

我认为您的错误是您将 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)

【讨论】:

【参考方案4】:

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

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

【讨论】:

以上是关于ValueError:发送的通道在 Raspberry Pi 上无效 - 使用 Python 控制 GPIO Pin 2 (BOARD) 会导致错误的主要内容,如果未能解决你的问题,请参考以下文章

Python:ValueError:类的数量必须大于一;得到 1

PyUSB ValueError:没有可用的后端

自定义 DataGenerator tensorflow 错误“ValueError:无法找到可以处理输入的数据适配器”

Golang 缓冲通道在发送之前接收数据

Gorilla Websocket 示例在处理另一个通道时尝试将数据发送到通道时挂起?

接收器关闭并在尝试通过通道发送时返回 SendError