0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用Arduino构建激光炮塔

454398 来源:网络整理 作者:网络整理 2020-01-31 17:30 次阅读

您无聊吗?还可以建造一个激光炮塔。您知道吗?一个会 pew pew 发射,向许多不同方向发射红光的光束,甚至可能会扔进烟雾机吗?是的,其中之一。

您需要什么

Arduino

2个伺服器

激光模块,例如该传感器套件

压电蜂鸣器或其他小型输出设备

用于固定

长母-公跳线以及常规跳线的金属电缆扎带

可选地,需要一台烟雾机–激光的功率非常低,因此即使在黑暗的房间中也无法看到无烟的光束。

如何使用Arduino构建激光炮塔

构建计划

转塔的基本思想是将激光模块放在一个伺服器的顶部以提供水平旋转。然后将该封装安装到另一个呈90度角放置的伺服器上,以提供垂直移动。我们有一个压电扬声器来提供 pew pew 声音效果,我正在扔烟机以达到良好的效果。

伺服测试

视您的伺服器而定,导线的颜色可能会有所不同,但是通常:

红色是正极线,在我的两个伺服器上,它都是三芯线的中心-连接到+ 5v

棕色或黑色是负极,要连接到Arduino的GND。

白色或橙色是信号线,要连接到具有PWM功能的数字I/O针(在下面的演示中为9和10)。

连接好两个伺服器后,请上传以下示例代码。我已经命名了一个伺服“ hori”来控制水平运动,另一个命名为“ vert”。每个人都应执行全方位的运动扫描(在我的情况下约为60度)。

#include

Servo vert,hori; // create servo object to control a servo

// a maximum of eight servo objects can be created

int pos = 0; // variable to store the servo position

void setup()

{

hori.attach(9);

vert.attach(10); // attaches the servo on pin 9,10 to the servo objects

vert.write(0);

hori.write(0);

}

void loop()

{

for(pos = 0; pos 《 180; pos += 10) // goes from 0 degrees to 180 degrees

{ // in steps of 10 degrees

vert.write(pos);

hori.write(pos); // tell servo to go to position in variable ‘pos’

delay(100); // waits 100ms for the servo to reach the position

}

for(pos = 180; pos》=1; pos-=10) // goes back from 180 degrees to 0 degrees

{

vert.write(pos); // tell servo to go to position in variable ‘pos’

hori.write(pos);

delay(100); // waits 100ms for the servo to reach the position

}

}

一切都好吗?然后继续前进。

测试激光和 Pew Pew 声音

激光模块就像一个LED,但是模块中内置了一个电阻器。因此我们可以将其直接连接到数字I/O-非常简单。如果您使用的激光模块与我相同,则“ – ”将进入 GND , S 将进入引脚12。上面的示例代码使第12针成为输出:

int laser = 12;

pinMode(laser,OUTPUT);

然后使用标准的 digitalWrite()方法在每个循环中使该引脚闪烁,每次循环闪烁。

我们将仅使用PWM以舒适的声音水平驱动压电蜂鸣器-如果需要,您可以尝试使用音调库,但是我只需要一个简单的噪音即可。将黑线接地,将红线连接到引脚11。在相关引脚上定义您的蜂鸣器,设置为输出模式,然后使用 analogWrite(buzzer,100)进行激活(或您想要的最多254个数字);和 analogWrite(buzzer,0)(关闭模拟音频)。

完整的示例代码已修改为扫描两个伺服,激活激光并播放令人讨厌的声音。

您的所有组件都应该正常工作-现在我们需要将所有组件绑在一起。

创建转塔

使用电缆扎带,将一个伺服器连接到另一个;哪一个都没关系,只需确保其中一个在水平方向上移动而另一个在垂直方向上移动即可。如果角度不正确,您可以在测试期间拔下转子叶片并重新安装。

使用一些坚固的造型线来固定激光器

最后,我将整个设备连接到带有更多电缆扎带的桌腿上一点废木头。

对炮塔编程

我不认识你,但是我的想法是激光炮塔来自无数的科幻电影和《星际迷航》剧集。总是有人会飞越炮塔,而 pew-pew 的小射门会以扫掠的模式飞出,总是太慢了几毫秒,所以我们的主角实际上并没有受到打击。这就是我要复制的内容,尽管可以随意调整主例程以适合您对转塔应该做什么的想法。

这是我最终在主循环中使用的伪代码:

随机化脉冲之间的时间,以及每次射击之间的时间。

随机化每个伺服,垂直和水平方向的开始和结束位置。

随机化拍摄数量。

计算出每次拍摄后的变化程度,以开始和结束位置之间的差除以拍摄数量。

将伺服器移至开始位置,并稍等一会儿到达目的地(100毫秒)

循环,直到拍摄完所有镜头为止,每次按先前计算的方式稍微移动伺服器;

重复。

我还添加了一个单独的 fire()方法来稍微构建代码更好。调整所有 random()函数的范围,以加快或减慢每个参数;或增加镜头数量以增加舞蹈俱乐部的氛围。向下滚动以查看操作中的代码的视频

#include

Servo vert,hori; // create servo object to control a servo

int pos = 0; // variable to store the servo position

int laser = 12;

int buzzer = 11;

void setup()

{

hori.attach(9);

vert.attach(10); // attaches the servo on pin 9 to the servo object

pinMode(laser,OUTPUT);

pinMode(buzzer,OUTPUT);

}

void loop()

{

int timeBetweenBursts = random(200,1000);

int timeBetweenShots = random(50,200);

int vertStart = random(1,180);

int vertEnd = random(1,180);

int horiStart = random(1,180);

int horiEnd = random(1,180);

int numShots = random(5,20);

int vertChange = (vertEnd - vertStart) / numShots; //how much to move vertical axis by each shot

int horiChange = (horiEnd - horiStart) / numShots;

vert.write(vertStart);//let it get to start position first, wait a little

hori.write(horiStart);

delay(100);

for(int shot = 0; shot vert.write(vertStart);

hori.write(horiStart);

vertStart += vertChange;//increment the vert value for next time

horiStart += horiChange;

fire();

delay(timeBetweenShots); //add a bit of variety to the speed of shots

}

delay(timeBetweenBursts);

}

void fire(){

digitalWrite(laser,HIGH);

analogWrite(buzzer,100);

delay(20);//adjust this to change length of turret shot

digitalWrite(laser,LOW);

analogWrite(buzzer, 0);

}

操作中

我认为这个小玩具没有实际用途,但这确实很有趣,而且您可以调整很多变量以获得理想的效果。也许对于自制乐高电影会派上用场吗?
责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 激光
    +关注

    关注

    19

    文章

    3172

    浏览量

    64438
  • Arduino
    +关注

    关注

    188

    文章

    6468

    浏览量

    186914
收藏 人收藏

    评论

    相关推荐

    VirtualLab Fusion应用:Ince-Gaussian光束产生涡旋阵列激光束的观测

    Fusion中建立系统 系统构建块-光源 系统构建块-组件和检测器 涡旋阵列激光束产生的模拟 光源中使用不同模态阶数生成涡旋阵列 椭圆度参数对涡流阵列方向图的影响 小结-系统光路图
    发表于 12-09 13:00

    AGV激光导航定位技术综述与发展趋势

    AGV是自动导引运输车,激光导航AGV具有高可靠性和柔性,需存储完整地图信息。地图构建重要,激光导航结合新导航方式可提高精度。未来激光导航AGV将多样化、灵活,便于使用维护。
    的头像 发表于 11-26 17:55 172次阅读
    AGV<b class='flag-5'>激光</b>导航定位技术综述与发展趋势

    开源项目!基于 Arduino 的 MIDI 架子鼓

    MIDI 鼓的整个过程 - 从使用压电传感器到使用 3D 打印设计布局,再到使用 Arduino Leonardo 进行编码。 此设置可与 GarageBand、Ableton 等程序无缝协作。和我一起
    发表于 11-25 12:00

    激光焊锡和激光焊接的原理区别

    激光锡焊跟激光焊接是一样的吗?为什么名字如此相似,它们是同一种激光工艺吗?能够通用吗?当然不是的,激光锡焊和激光焊接只是名字相近,从工作原理
    的头像 发表于 11-23 14:02 241次阅读
    <b class='flag-5'>激光</b>焊锡和<b class='flag-5'>激光</b>焊接的原理区别

    基于Arduino的串口通信项目

    基于Arduino的串口通信项目涉及多个方面,包括硬件连接、软件编程、串口参数配置等。 一、硬件准备 Arduino开发板 :确保你有一块Arduino开发板,如Arduino Uno
    的头像 发表于 11-22 09:24 452次阅读

    如何使用Arduino实现CAN总线通信

    CAN总线(Controller Area Network)是一种多主控制的串行通信协议,广泛应用于汽车电子、工业自动化等领域。它以其高可靠性、实时性和灵活性而受到青睐。Arduino作为一个
    的头像 发表于 11-12 10:09 686次阅读

    激光雷达的工作原理和分类

    激光雷达是一种以发射激光束来探测目标位置、速度等特征量的雷达系统。 这个系统也可以通过扫描发射和接收装置来获取目标物体的三维形状,在不同角度发射和接收激光脉冲,可以构建出物体的完整三维
    的头像 发表于 11-07 09:28 378次阅读
    <b class='flag-5'>激光</b>雷达的工作原理和分类

    AGV激光导航定位技术与构建地图

    AGV是制造物流重要设备,激光导航AGV高可靠灵活,SLAM技术关键,激光SLAM成熟且落地丰富,无需人工标志物,复合式激光导航兼顾可靠性与灵活性,激光导航结合内部传感器提升导航质量。
    的头像 发表于 11-06 11:51 172次阅读
    AGV<b class='flag-5'>激光</b>导航定位技术与<b class='flag-5'>构建</b>地图

    激光焊接工艺有哪些?

    1、激光自熔焊 激光焊接是利用激光光束优异的方向性和高功率密度等特性进行工作,通过光学系统将激光束聚焦在很小的区域内,在极短的时间内使被焊处形成一个能量高度集中的热源区,从而使被焊物熔
    发表于 10-12 08:37

    轩展科技 FCB-EV9520L摄像机模组:激光炮砍树的智能视觉解决方案

    FCB-EV9520L作为一款高清机芯模组,在激光炮砍树摄像机中的应用将带来显著的优势。其高清成像能力、低光环境适应性、超级图像防抖功能、宽动态范围以及新三区域功能等特性将确保操作人员能够清晰地监控砍树过程,提高作业的安全性和效率。
    的头像 发表于 07-25 10:10 329次阅读
    轩展科技 FCB-EV9520L摄像机模组:<b class='flag-5'>激光炮</b>砍树的智能视觉解决方案

    如何使用Arduino IDE构建的ELF映像?

    我有一个要求,我需要使用使用 Arduino IDE 构建的ELF映像,但 NonOS SDK 中提供了boot_v1.6.bin。我执行了以下步骤 背景: 1. Arduino 构建
    发表于 07-09 07:13

    构建一个基于Arduino的空气质量监测系统

    呼吸清洁、健康的空气对我们的健康至关重要,但在许多环境中,空气质量仍然是一个问题。在本文中,我们将深入探讨如何创建一个基于Arduino的空气质量监测系统。我们将从讨论各种组件开始,然后继续讨论其MQ135传感器与Arduino板的接口,然后是编码。所以,让我们直接进入它
    的头像 发表于 02-11 12:03 4127次阅读
    <b class='flag-5'>构建</b>一个基于<b class='flag-5'>Arduino</b>的空气质量监测系统

    如何将KY-008连接到Arduino

     KY-008 是一种激光发射器模块,可产生点状激光束,可用作激光指示器或创建迷你激光表演。它与 Arduino、Raspberry PI、
    的头像 发表于 02-11 11:02 1487次阅读
    如何将KY-008连接到<b class='flag-5'>Arduino</b>

    2023年Arduino开放原码报告:持续茁壮的Arduino生态系!

    所谓出钱就是买一片Arduino开发板或是付费订阅Arduino Cloud云端服务,或单纯资金赞助;出力就是撰写Arduino相关的程序并无私的分享程序代码或回报错误或投入翻译等,笔者即有若干翻译新版
    的头像 发表于 01-25 16:45 1412次阅读
    2023年<b class='flag-5'>Arduino</b>开放原码报告:持续茁壮的<b class='flag-5'>Arduino</b>生态系!

    Arduino制作循迹小车教程

    Arduino制作循迹小车完全教程
    发表于 01-05 11:09 7次下载