如何利用Arduino实现激光绊线

这篇文章来源于deviceplus.com英语网站的翻译稿。
arduino激光绊线
目的
本教程描述了如何使用arduino uno制作一个激光绊线。如果您不熟悉arduino平台,请参阅“arduino设置教程”。
概述
在本教程中,您将学习如何设置激光绊线传感器,并在光束被阻断时触发执行器,在此例中为点亮led。您将学习如何使用if/else循环、激光二极管以及光敏电阻。
警告: 激光可能对眼睛有害,切勿直视激光束。
设备
arduino uno r3
“dot”激光模
20件光敏电阻套
9v、1a电源适配器
跳线
usb电缆(a-to-b)
面包板
目录
电路设计
编写代码
引脚定义
设置
循环
上传并运行程序
程序
1.1 电路设计
这个项目的电路设计相当简单。电路分为三部分:激光电源、光敏电阻接收器(传感器)和led指示灯(执行器)。一般来讲,单片机通过传感器接收来自外界的信息,并通过执行器传递信息或执行操作。我选择使用led指示灯作为我的执行器,但是执行器可以是警报、短信,甚至是门锁。
我总是喜欢用fritzing绘制原理图(图1:电路原理图)。fritzing是一款开源原理图设计和pcb布线软件。这样,将来可以作为参考。
图1:电路原理图
电路的第一部分是激光二极管的电源。您可以用5v引脚(红色导线)为激光二极管供电。我希望能够打开/关闭激光器,但是arduino上的数字输出引脚无法为激光二极管提供足够的功率。负极应接地(黑色导线)。确保您的激光二极管不需要限流电阻。如果需要,请选择适当的阻值。
接下来将创建我们的执行器(led指示灯)。执行器的目的是告诉我们激光二极管光束已经被阻断。led和电阻应串联在引脚9(浅蓝色导线)和gnd(黑色导线)之间。电阻的作用是限制流过led的电流,并应根据您的led进行相应调整,以防止电流过大将led烧坏。请记住,led较长的引线是正极,应连接到引脚9。
最后,电路的最后一部分是光敏电阻(图2:光敏电阻),即我们的传感器。光敏电阻是一种电阻,其阻值会随电阻面上的光线强度变化而变化。电阻的一个引线应连至引脚7(浅蓝色导线),另一个引线应连至gnd(黑色导线)。我使用的光敏电阻在光线照射时具有高电阻,而在没有光线时具有低电阻。
图2:光敏电阻
2.0 编写代码
2.1 引脚定义
代码的第一部分是定义引脚。这一步是可选操作,但是为了便于记忆和跟踪,我为引脚添加了描述性名称。另外,如果我改变电路的连接方式,只需改变引脚定义即可,无需改变引用引脚编号的每一行代码。
在我们的电路中,光敏电阻被定义为“引脚7”,led被定义为“引脚9”。
图3:引脚定义
2.2 设置
在代码的设置部分,我将led引脚配置为数字输出。
图4:设置代码
我们还将光敏电阻配置为带上拉电阻(input_pullup)的数字输入。我们正在创建的电路与下面的电路类似,这是一种常用电气电路。在这种情况下,上拉电阻和电压源位于单片机(arduino)内部,“按钮”则是我们的光敏电阻。当激光二极管照射在光敏电阻上时,它呈现高电阻,并且上拉电阻将输入的电压拉到数字高电平。当光束被阻断时,光敏电阻的电阻下降,输入电压变为数字低电平。
图5:上拉电阻输入电路
2.3 循环
对于重复循环,我编写了一个连续查询光敏电阻数字输入的if/else语句。如果数字输入为高电平,led输出关闭;否则led输出开启。
图6:循环代码
3.0 上传并运行程序
图7:激光绊线的arduino电路
将代码上传到arduino。确保arduino已经连接9v电源适配器,因为usb电源不足以为arduino和激光二极管同时供电。程序开始后,激光二极管应该输出一束激光。如果光束照射在光敏电阻上,led应熄灭(图8:激光绊线)。当光束被阻断时,led亮起,表明绊线已经断开(图9:绊线断开)。
图8:激光绊线
图9:绊线断开
提示:如果您的led没有点亮,请使用万用表分别检查激光照射到光敏电阻上时光敏电阻的阻值以及光束阻断时光敏电阻的阻值。光照射到光敏电阻上时,光敏电阻的阻值应该在数千欧姆;没有照射时,阻值应为几百欧姆或更低。
附件:激光绊线代码
/* project: laser tripwire tutorial * written by: chris marella * date: january 24, 2018 * version: 1.0 * *///pin definitionsconst int photo = 7;const int led = 9;void setup() { //pin configurations //outputs pinmode(led, output); digitalwrite(led, low); //inputs pinmode(photo, input_pullup);}void loop() { //if/else loop checks if photoresistor is high or low if(digitalread(photo)==high){ digitalwrite(led, high); }else{ digitalwrite(led, low); }}
deviceplus 编辑团队
设备升级版适用于所有热爱电子和机电一体化的人。


NI LabVIEW 8.5软件的五大特性与改进
浅析KUKA机器人系统变量和系统文件
受产业链上下游影响 全球液晶面板出货量下降
苹果售卖Lightning转3.5毫米插口双向音频线
英伟达再出黑魔法GauGAN:凭借几根线条,草图秒变风景照
如何利用Arduino实现激光绊线
新能源车换电模式“风口”来临,未来前景可期
欢迎报名|20+行业巨擘开年巨献,为我国数字经济发展增动能!
打印机和电脑怎么连接
苹果T2芯片最新更新的MacBook Air和最新的Mac mini中投入使用
高压变频器由几部分组成
LCD液晶显示屏的简单介绍
日本显示屏解决方案供应商NGC正在向客户供应三星的The Wall系列产品
Low-Temperature Data Retention
2023工业互联网及工业软件大会·10月落户北京
SPI数据传输有哪些方式
5G技术为沙特阿拉伯诸多领域创造新的商业模式并释放机遇
商汤科技入选2018 Q2胡润独角兽榜 成AI产业“角尖力量”
三星新旗舰Galaxy S21系列似乎也将步iPhone12的后尘
混改能拯救创下史上最差业绩的中国联通