实验目的:通过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()
#视频效果如下: