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

    文章

    3107

    浏览量

    64333
  • Arduino
    +关注

    关注

    187

    文章

    6461

    浏览量

    186555
收藏 人收藏

    评论

    相关推荐

    激光雷达在SLAM算法中的应用综述

    一、文章概述 1.1 摘 要 即时定位与地图构建(simultaneous localization and mapping,SLAM)是自主移动机器人和自动驾驶的关键 技术之一,而激光雷达则是支撑
    的头像 发表于 11-12 10:30 138次阅读
    <b class='flag-5'>激光</b>雷达在SLAM算法中的应用综述

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

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

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

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

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

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

    激光焊接工艺有哪些?

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

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

    FCB-EV9520L作为一款高清机芯模组,在激光炮砍树摄像机中的应用将带来显著的优势。其高清成像能力、低光环境适应性、超级图像防抖功能、宽动态范围以及新三区域功能等特性将确保操作人员能够清晰地监控砍树过程,提高作业的安全性和效率。
    的头像 发表于 07-25 10:10 278次阅读
    轩展科技 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如何停止loop循环

    Arduino的loop循环是其主要的程序执行部分,该循环将在Arduino开发板上持续运行,并且只有在程序被重新上传或开发板断电重启时才会停止。然而,在某些情况下,你可能需要在程序执行过程中停止或
    的头像 发表于 02-14 16:24 4099次阅读

    arduino中while循环怎么跳出

    Arduino 是一款开源的硬件平台,广泛应用于各种物联网和嵌入式系统项目。在 Arduino 上编写代码时,循环结构起到了至关重要的作用。而其中的 while 循环更是常用于需要根据特定条件重复
    的头像 发表于 02-14 16:22 2330次阅读

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

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

    如何将KY-008连接到Arduino

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

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

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

    【开源项目】Arduino ESP32 彩色电子气象站

    展示我是如何构建这个项目的,以及如何使用相同或相似的显示器来构建自己的项目。 首先,让我解释一下这个项目是什么以及它是如何工作的。 如您所见,我们有一个大型 6 英寸电子纸显示屏,可以显示 7 种颜色
    发表于 01-16 14:01

    Arduino制作循迹小车教程

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

    Arduino的功能及其限制

    Arduino是一种开源电子原型平台,它基于易于使用的硬件和软件,可以用于制作各种嵌入式系统。然而,尽管Arduino非常强大,但它也有一些功能上的限制。本文将详细介绍Arduino的功能,并探讨
    的头像 发表于 12-21 14:15 1116次阅读