最是人间留不住,朱颜辞镜花辞树。这篇文章主要讲述一起玩转树莓派(12)——U型光电传感器相关的知识,希望能为你提供帮助。
一起玩转树莓派(12)——U型光电传感器本篇博客,我们将使用U型光电传感器实现一个简单的测速工具。本实使用的元件简单,实验的原理也非常简单。
一、关于U型光电传感器U型光电传感器由于其有一个U型的凹槽而得名。其凹槽的一侧会发射红外光,凹槽的另一侧装有接收装置。通过对红外光的遮挡与导通,从而改变元件信号源引脚的电平高低。基于这种特性,我们很容易使用U型光电传感器来测量是否有物体遮挡光线。在测速领域,运用广泛。
本实验使用的传感器模块如下图所示:
文章图片
可以看到,此元件有3个引脚,GND引脚为接地引脚,VCC引脚为电源引脚,OUT引脚是输出引脚,当接收器能够接收到从发射源发出的光线时,输出引脚为低电平,当光线被阻断时,输出引脚为高电平。
二、计数器 OR 测速器U型光电传感器有着非常广泛的应用,试想一下,如果一个车间流水线在不停的生产商品,如何方便的对生产的商品数量进行自动计数?这时我们就可以将一个U型光电传感器安装到商品的传送带上,只要有商品从传送带上通过,即会挡住传感器发射源发出的红外光,从而触发电平的跳变,实现计数功能。除此之外,U型光电传感器也可以方便的实现测速,我们只要知道了物体的长度和物体通过U型传感器的时间,就可以使用公式v = s / t从而计算出物体运动的速度。下面我们就来编写代码实现这两个功能。
首先,元件与树莓派连线如下:
U型光电传感器 | 树莓派 |
---|---|
VCC | 3.3V电源 |
GND | GND |
OUT | GPIO17(BCM编码) |
#coding:utf-8import RPi.GPIO as GPIO
import time
# 采用物理编码
GPIO.setmode(GPIO.BOARD)
# BCM GPIO17的物理编码是11
out_pin = 11
# 0 计数模式 1 测速模式
MODE = 0
count = 0
# 测速模式下,需要初始化长度S 单位为毫米
S = 10
t1 = 0
t2 = 0# 进行引脚的初始化,不被遮挡时为低电平,使用低电平的下拉电阻
GPIO.setup(out_pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)# 定义回调函数
def switch_state(pin):
global count,t1,t2
# 如果是高电平
if GPIO.input(pin):
print("物体遮挡")
if MODE == 0:
count += 1
else:
t1 = time.time()
else:
print("物体遮挡消失")
if MODE == 0:
print(\'计数器-数量:%d\'%(count))
else:
t2 = time.time()
t = t2 - t1
v = S / t
print(\'测速器-速度%fmm/s\'%(v))GPIO.add_event_detect(out_pin, GPIO.BOTH, callback=switch_state)while True:
pass
如上代码所示,我们可以设置MODE变量来让元件工作在计数模式下或者测速模式下。在树莓派上运行此代码,尝试下计数和测速的功能吧。
【一起玩转树莓派(12)——U型光电传感器】
文章图片
推荐阅读
- 性能环境之docker操作指南3(全网最全)
- 华为音频编辑服务带你一键伴奏分离!
- 记一次pg_rman备份postgresql数据库报段错误的处理过程
- win7系统端口139与455关闭可有效果保护电脑安全
- win7系统如何不待机 设置Win7不待机的技巧
- 用usb安装win7系统旗舰版需占用多大空间?
- win7系统旗舰纯净版将“扩容U盘”恢复回实际容量的办法
- win7系统右下角图标突然消失了是怎样回事
- win7系统桌面图片设置纯色壁纸与屏保