我操纵一个传感器:hcsr04来捕捉距离。 我是Python和RPI的新手。我的代码工作,我捕捉的距离在一段时间内,但有一刻脚本停止。。。在
我的代码:
GPIO.setmode(GPIO.BCM)
GPIO_TRIGGER = 23
GPIO_ECHO = 24
GPIO.setup(GPIO_TRIGGER, GPIO.OUT)
GPIO.setup(GPIO_ECHO, GPIO.IN)
def main():
global state
print("ultrasonic")
while True:
print "1s second refresh.."
time.sleep(1)
i = 0
datas = []
average = 0
while i< 1:
GPIO.output(GPIO_TRIGGER, False)
time.sleep(C.time['count'])
GPIO.output(GPIO_TRIGGER, True)
time.sleep(0.00001)
GPIO.output(GPIO_TRIGGER, False)
while GPIO.input(GPIO_ECHO) == 0:
start = time.time()
while GPIO.input(GPIO_ECHO) == 1:
stop = time.time()
distance = (stop-start) * 17000
print "Distance : %.1f" % distance
average = F.getAverage(datas)
print "Average: %.1f" % average
GPIO.cleanup()
代码到此为止
^{pr2}$解决方案:有一个示例超时:
now = time()
while GPIO.input(self.gpio_echo) == 0 and time()-now<waitTime:
pass
不是真的,我想我失去信号了,我试着暂停一下
我认为我的程序无限期地等待一个信号,但他保持在0
我很确定你想要
我不认为GPIO.input.输入很自然地返回0或1,但您可以对此进行测试。在
我也在摆弄这个传感器。我的代码执行与你的代码相似,我不需要超时就可以工作。 唯一不同的是:
我不知道这里的睡眠时间有多长,但这可能是造成问题的原因。如果它将类似于我的设置,触发器设置为假将直接在设置输入/输出引脚,然后有两秒钟的等待,以消除噪音。你的等待时间可能会短些,我不知道。在你发送脉冲之前,不需要再把触发器设为false,我不知道,但这可能会导致错误的启动。我会将其更改为与我的类似,然后在while循环中将设置删除为false。在
^{pr2}$我不确定这是否能在不需要暂停的情况下解决问题,但我似乎不需要暂停。在
我已经写了一个模块来制作传感器的对象,然后允许一些更可读的脚本。我对python也很陌生,根本不是一个有经验的程序员,所以可能会有一些有趣的错误,但如果您想使用它或只是比较代码,请看下面的内容:
我用下面的代码运行它来测试它,一切似乎都正常。第一次运行时,它会提示你校准传感器,把它放在不同的距离。在
相关问题 更多 >
编程相关推荐