在循环中运行函数一次?

2024-09-29 23:27:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用超声波传感器,树莓皮和Python建立一个近地警告系统。我有一个检查距离的循环,基于这个距离,我想读一个标注。在

预期功能:显示在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循环中最后一秒的平均值?在

Tags: import功能距离inputoutputgpiotimesleep

热门问题