U型光电传感器测量速度频率实验

实验目的:通过U型传感器,检测物体多次经过的时间间隔;从而计算出物体经过的速度和频率。
#接线效果如图
接线示例
#实验过程
1、执行程序 Python jiujiang.py
2、拿起遮挡物反复执行拿起放下,模拟物体规律经过光电检测口;
3、可见屏幕显示遮挡物每次出现距离上次的时间;从而推导出频次信息;
实验结果
4、由于实验只是计算上次和这次的时间检测,没有做统计信息;也可以每次时间都记录下来,然后单独分析,做更宏观的分布统计;
#实验代码

#!/usr/bin/env python
#coding:utf-8

'''
from JiuJiang
树莓酱的操作实例
https:://www.shumeijiang.com
'''

import RPi.GPIO as GPIO  ##引入GPIO模块
import time              ##引入time库

uPin = 18

GPIO.setmode(GPIO.BCM)   ##此处采用的BCM编码 因为T型扩展板也是BCM编码 方便统一
GPIO.setup(uPin, GPIO.IN)  ##设置为接收模式

filePath = 'time.data' ##文本记录通过时间戳 也可用数据库表

try:
    while True:
        status = GPIO.input(uPin)  ##接收状态
        if status == 0: continue   ##检测到没有物体时候跳过
        if status == 1:
            handle = open(filePath, 'r+')

            currentTime = time.time() ##获取当前时间点
            getTime = handle.read()   ##读取上次通过时的时间点
            getTime = float(getTime)

            if not getTime: getTime = 0 ##如果上次没有时间 则不计算
            handle.seek(0)
            handle.truncate()  ##清空上次记录 记录本次时间点

            handle.write(str(currentTime))  ##填写本次触发时间点
            handle.flush()
            handle.close()

            if getTime == 0:  continue  ##如果不能计算 则跳过
            frequency = round(currentTime-getTime-0.3, 2)
            print("频率为%s秒/次" %(frequency))   ##输出信息

            time.sleep(0.3)  ##检测频率 可自己调整

except KeyboardInterrupt:
    pass

GPIO.cleanup()
#视频效果如下: