私はラズベリー PI のスクリプトに取り組んでおり、問題の前に立っています。
複数の GPIO 入力のエッジを解釈するのが好きです。そのため、私は python 関数GPIO.event_detected
とGPIO.add_event_detect
. これは IDE では正常に機能しますが、シェルでスクリプトを使用しようとするとsudo python3 script.py
、ボタンを押しても何も起こりません。
GPIO を次のように初期化しています。
numbtns = len(buttons)
index = 0
for index in range(numbtns):
GPIO.setup(buttons[index], GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.add_event_detect(buttons[index],GPIO.RISING,bouncetime=200)`
ボタンを次のように確認します。
if(GPIO.event_detected(GPIO_RADIO)):
これがシェルで機能しない理由はありますか?
編集:これは私のスクリプトから興味深いコードスニペットを集めたものです
import RPi.GPIO as GPIO
import time
import os
from threading import Thread
#GPIO-Belegung
GPIO_RADIO = 18
GPIO_PREV = 11
GPIO_NEXT = 9
GPIO_DOWN = 17
GPIO_UP = 15
GPIO_SELECT = 14
GPIO_MUSIK = 16
GPIO_TEMPERATUR = 4
# GPIO Konfig
GPIO.setmode(GPIO.BCM)
buttons =[GPIO_RADIO,GPIO_PREV,GPIO_NEXT,GPIO_TEMPERATUR,GPIO_DOWN,GPIO_UP,GPIO_SELECT]
def init_gpio(buttons):
numbtns = len(buttons)
index = 0
for index in range(numbtns):
GPIO.setup(buttons[index], GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.add_event_detect(buttons[index],GPIO.RISING,bouncetime=200)
def main():
...
init_gpio(buttons)
...
while True:
if(GPIO.event_detected(GPIO_RADIO)):
do something...
....
if __name__ == '__main__':
main()