2017-01-16 19 views
1

を私はgpiozeroRPi.GPIOの両方を使用して、異なるアプローチを試みラズベリーパイ3モデルB. は、エッジ検出の追加に失敗しました - ラズベリーパイ3 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を再インストールしようとしたが、それは助けにはなりませんでした。ここで

は私もArch_armオペレーティングシステムとラズベリーのPI3 Bに同じ問題を取得し、例外

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 

答えて

1

の完全なトレースバックです。 この問題はPythonコードとは関係がないようです。


Raspberrypi/linuxシステムでは、デフォルトでルート権限を持つGPIOしか使用できません。

/dev/memの代わりに/dev/gpiomemを使用すると、ユーザーはGPIOを無根で使用できるようになります。もちろん、いくつかの変更を加える必要があります。

  1. 新しいグループ名を追加しgpio & &は、グループに

    sudo group -r gpio 
    sudo usermod -a -G gpio pi 
    
  2. を自分のユーザーアカウント名を追加するには、下のこれらのルールを追加することができます/etc/udev/rules.d/

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

    にudevルールを追加ファイルの末尾に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'" 
    

関連する問題