我正在建造一个带有超声波传感器,树莓派和蟒蛇的近地警告系统。我有一个检查距离的循环,并根据该距离我想要读取标注。
预期功能:显示在youtube视频中Boeing 737 cockpit landing(收听自动标注 - 对不起空中客车粉丝;)。
预期的功能说明: 达到高度后,播放一次mp3声音,但前提是距离越近,距离越远。
超声波传感器的Python代码:
#! /usr/bin/python
import RPi.GPIO as GPIO
import time
def checkdist():
GPIO.output(16, GPIO.HIGH)
time.sleep(0.000015)
GPIO.output(16, GPIO.LOW)
while not GPIO.input(18):
pass
t1 = time.time()
while GPIO.input(18):
pass
t2 = time.time()
return (t2-t1)*340/2
GPIO.setmode(GPIO.BOARD)
GPIO.setup(16,GPIO.OUT,initial=GPIO.LOW)
GPIO.setup(18,GPIO.IN)
time.sleep(2)
os.system('mpg123 -q PWSOnline.mp3 &')
try:
while True:
print('Distance: %0.2f m' %checkdist())
time.sleep(0.1)
except KeyboardInterrupt:
GPIO.cleanup()
我想做什么:
超声波传感器距离值往往会跳跃 在更远的距离,所以某种方式来获得最后0.5的平均值 秒
仅在距离越来越远的情况下播放标注 离开 - 所以我想它需要看到平均变化超过1秒(无论是减少还是增加)?
播放一次标注。
问题:
while
循环中最后一秒的平均值?