gpt4 book ai didi

python - 无法添加边缘检测 - Raspberry Pi 3 GPIO

转载 作者:太空宇宙 更新时间:2023-11-03 15:46:49 25 4
gpt4 key购买 nike

我使用的是 Raspberry Pi 3 B 型。

我使用 gpiozeroRPi.GPIO 尝试了不同的方法。无论使用什么库都会出现此问题。

这是一个因gpiozero而失败的代码示例。

from gpiozero import Button
from signal import pause

def handle():
print("Pressed!")

button = None
while not button:
try:
button = Button(4, pull_up=True)
button.when_pressed = handle
except RuntimeError as e:
print(e)
pass

pause()

button = Button(4, pull_up=True) 始终引发 RuntimeError 和程序的输出(运行 python3)是:

Failed to add edge detection
Failed to add edge detection
Failed to add edge detection
Failed to add edge detection
# ... it goes on for ages

我已经尝试重新安装 RPi.GPIOgpiozero 但没有帮助。

这是异常的完整回溯

Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 84, in __init__
self.pin.when_changed = self._fire_events
File "/usr/lib/python3/dist-packages/gpiozero/pins/__init__.py", line 240, in <lambda>
lambda self, value: self._set_when_changed(value),
File "/usr/lib/python3/dist-packages/gpiozero/pins/rpigpio.py", line 233, in _set_when_changed
bouncetime=self._bounce)
RuntimeError: Failed to add edge detection

最佳答案

我在使用 Arch_arm 操作系统的 Raspberry Pi 3 B 上也遇到了同样的问题。
看来这个问题与你的Python代码无关。

<小时/>

在Raspberrypi/linux系统中,默认只能使用root权限的GPIO。

使用/dev/gpiomem代替/dev/mem,可以让用户无根使用GPIO。当然你应该做一些改变。

  1. 添加新组名称 gpio && 将您的用户帐户名称添加到组

    sudo groupadd -r gpio
    sudo usermod -a -G gpio pi
  2. 将 udev 规则添加到 /etc/udev/rules.d/

    ls -l /etc/udev/rules.d
    -rw-r--r-- 1 root root 580 Aug 5 15:02 raspberrypi.rules

您可以使用 sudo 将以下这些规则添加到文件 raspberrypi.rules 的尾部。

    SUBSYSTEM=="bcm2835-gpiomem", KERNEL=="gpiomem", GROUP="gpio", MODE="0660"
SUBSYSTEM=="gpio", KERNEL=="gpiochip*", ACTION=="add", PROGRAM="/bin/sh -c 'chown root:gpio /sys/class/gpio/export /sys/class/gpio/unexport ; chmod 220 /sys/class/gpio/export /sys/class/gpio/unexport'"
SUBSYSTEM=="gpio", KERNEL=="gpio*", ACTION=="add", PROGRAM="/bin/sh -c 'chown root:gpio /sys%p/active_low /sys%p/direction /sys%p/edge /sys%p/value ; chmod 660 /sys%p/active_low /sys%p/direction /sys%p/edge /sys%p/value'"

祝你编码愉快。

关于python - 无法添加边缘检测 - Raspberry Pi 3 GPIO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41679547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com