我用的是树莓派,用的是Python。 我想接收来自距离传感器的连续输入,并由距离值决定是否发送输出。在
我有一个输出函数gogo和一个sense函数sense,它更新距离值。在
我希望当距离低于20时输出开始,当距离达到阈值20时停止输出,但是我能看到的唯一解决方案是另一个循环。在
我的代码不工作,我认为有一个很好的解决方案,但我不太精通循环。在
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
distance = 40.0
TRIG = 4
ECHO = 18
GPIO.setup(TRIG,GPIO.OUT)
GPIO.setup(ECHO,GPIO.IN)
GPIO.setup(23, GPIO.OUT)
GPIO.setup(24, GPIO.OUT)
GPIO.setup(25, GPIO.OUT)
def gogo():
Motor1A = 23
Motor1B = 24
Motor1E = 25
GPIO.setup(Motor1A,GPIO.OUT)
GPIO.setup(Motor1B,GPIO.OUT)
GPIO.setup(Motor1E,GPIO.OUT)
print "Turning motor on"
GPIO.output(Motor1A,GPIO.HIGH)
GPIO.output(Motor1B,GPIO.LOW)
GPIO.output(Motor1E,GPIO.HIGH)
def sense():
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
#CM:
distance = sig_time / 0.000058
#inches:
#distance = sig_time / 0.000148
print('Distance: {} centimeters'.format(distance))
while distance > 20.0:
print (distance)
sense()
else:
print (distance)
gogo()
sense()
GPIO.cleanup()
问题是作用域;
distance
经常出现在40个主代码中。它只在sense()
中更新首先,让我们编辑sense以返回距离的值
你也应该创建一个关闭马达的功能
你需要定义距离,也让我们做一个永远运行的循环。现在,你的循环只运行到distance<;20
^{pr2}$相关问题 更多 >
编程相关推荐