我正在做树莓派项目中,我按下一个按钮和一个距离传感器告诉我的,我点了传感器的距离。
当我按一下按钮,我得到的距离,然后我得到这个错误:
Traceback (most recent call last):
File "/home/pi/Desktop/ButtonTestingWithDistanceSensor.py", line 18,
in <module>
input_state = GPIO.input(buttonPin)
RuntimeError: You must setup() the GPIO channel first
这里是我的代码:
import RPi.GPIO as GPIO
import time
buttonPin = 17
TRIG = 4
ECHO = 27
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(TRIG, GPIO.OUT)
GPIO.setup(ECHO, GPIO.IN)
GPIO.setup(buttonPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
while True:
GPIO.setmode(GPIO.BCM)
input_state = GPIO.input(buttonPin)
GPIO.setup(buttonPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
if input_state == False:
GPIO.output(TRIG, True)
time.sleep(0.00001)
GPIO.output(TRIG, False)
while GPIO.input(ECHO) == False:
start = time.time()
while GPIO.input(ECHO) == True:
end = time.time()
sig_time = end-start
#Center Meters
distance = sig_time / 0.000058 # inches: 0.000148
print("Distance: {} cm".format(distance))
GPIO.cleanup()
time.sleep(0.2)
任何帮助非常感谢,谢谢。
原因您的问题是,你在你的情况,如果运行GPIO清理。
GPIO.cleanup()
这完全停止GPIO通道,你必须重新运行安装程序。
从while循环中删除这两个语句和代码都应该按照您的预期
1号线
GPIO.setup(buttonPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
2号线
GPIO.cleanup()