我有以下课程:
import RPi.GPIO as GPIO
class DistanceSensor2:
def __init__(self, GPIO_MODE, GPIO_TRIGGER, GPIO_ECHO):
def set_times(channel):
print("set_times")
self.GPIO_TRIGGER = GPIO_TRIGGER
self.GPIO_ECHO = GPIO_ECHO
GPIO.setmode(GPIO_MODE)
GPIO.setup(self.GPIO_ECHO, GPIO.IN) # Echo
GPIO.add_event_detect(self.GPIO_ECHO, GPIO.RISING, callback = set_times)
然后,在我的主要.py中我有:
import RPi.GPIO as GPIO
from DistanceSensor2 import *
GPIO_MODE = GPIO.BCM
GPIO_TRIGGER = 18
GPIO_ECHO = 25
test = DistanceSensor2(GPIO_MODE, GPIO_TRIGGER, GPIO_ECHO)
我收到错误:
Traceback (most recent call last):
File "PythonHelloWorld.py", line 8, in <module>
test = DistanceSensor2(GPIO_MODE, GPIO_TRIGGER, GPIO_ECHO)
File "/home/pi/PythonHelloWorld/PythonHelloWorld/DistanceSensor2.py", line 31, in __init__
GPIO.add_event_detect(self.GPIO_ECHO, GPIO.RISING, callback = set_times)
RuntimeError: Failed to add edge detection
当我在主.py中直接使用下面的代码时,它可以正常工作。
import RPi.GPIO as GPIO
import time
GPIO_MODE = GPIO.BCM
GPIO_ECHO = 18
def set_times(channel):
print("set_times")
GPIO.setmode(GPIO_MODE)
GPIO.setup(GPIO_ECHO, GPIO.IN) # Echo
GPIO.add_event_detect(GPIO_ECHO, GPIO.RISING, callback = set_times)
while 1:
print("inside while")
time.sleep(1)
有人能看出问题所在吗?我已经尝试将set_times()移动到方法外部,它也不起作用。
答案 0 :(得分:0)
终于看到了错误。我的新代码如下:
我的课程:
import RPi.GPIO as GPIO
import time
class DistanceSensor2:
def __init__(self, GPIO_MODE, GPIO_TRIGGER, GPIO_ECHO):
self.GPIO_TRIGGER = GPIO_TRIGGER
self.GPIO_ECHO = GPIO_ECHO
GPIO.setmode(GPIO_MODE)
GPIO.setup(self.GPIO_ECHO, GPIO.IN) # Echo
GPIO.add_event_detect(self.GPIO_ECHO, GPIO.RISING, callback = self.set_times)
GPIO.setup(self.GPIO_TRIGGER, GPIO.OUT, initial = GPIO.LOW )
while 1:
print("while")
time.sleep(1)
def set_times(self, channel):
print("channel:", channel)
我的主要.py
import RPi.GPIO as GPIO
from DistanceSensor2 import *
import sys
GPIO_MODE = GPIO.BCM
GPIO_TRIGGER = 24
GPIO_ECHO = 17
try:
test = DistanceSensor2(GPIO_MODE, GPIO_TRIGGER, GPIO_ECHO)
except KeyboardInterrupt:
GPIO.cleanup()
sys.exit