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

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

    关注

    21

    文章

    3578

    浏览量

    69090
  • Arduino
    +关注

    关注

    190

    文章

    6515

    浏览量

    195948
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Arduino plc和termux esp

    Arduino plc和termux esp
    的头像 发表于 12-06 06:41 859次阅读

    如何用Arduino Nano/UNO R3开发板给另一个Arduino IDE不能下载的Arduino Nano/UNO R3开发板重新烧录引导程序bootlaoder

    本文介绍了如何用能够Arduino IDE下载的Arduino Nano/UNO R3开发板给另一个Arduino IDE不能下载的Arduino Nano/UNO R3开发板重新烧录
    的头像 发表于 08-08 20:16 3059次阅读
    如何用<b class='flag-5'>Arduino</b> Nano/UNO R3开发板给另一个<b class='flag-5'>Arduino</b> IDE不能下载的<b class='flag-5'>Arduino</b> Nano/UNO R3开发板重新烧录引导程序bootlaoder

    免费分享Arduino入门+进阶(全套例程+书籍)

    Arduino是一款开源电子原型平台,由硬件(单片机开发板)和软件(编程环境)组成,旨在让非专业用户也能轻松入门电子制作和编程。它的核心思想是简化硬件开发,通过直观的编程和模块化设计,让用户快速实现
    的头像 发表于 05-22 11:40 774次阅读
    免费分享<b class='flag-5'>Arduino</b>入门+进阶(全套例程+书籍)

    《ESP32S3 Arduino开发指南》第二章 Arduino基础知识

    第二章 Arduino基础知识 本章,我们将向大家介绍Arduino是一个什么东西?让大家对Arduino有一个大概了解。本章将分为如下几个小节:2.1什么是Arduino2.2
    发表于 05-13 09:28

    激光在工业中的应用

    本文主要介绍了激光技术在工业制造领域的应用,包括激光切割、激光焊接和激光增材制造。
    的头像 发表于 04-24 10:21 1240次阅读
    <b class='flag-5'>激光</b>在工业中的应用

    3000W激光反制无人机系统 - 全天候守护重点区域安全防线

    在无人机技术快速普及的当下,非法 “黑飞” 事件频发,给公共安全、隐私保护和重点区域安防带来严峻挑战。西安知语云科技凭借持续创新,推出了 3000W 级激光反制无人机系统,以 “光盾” 技术构建
    发表于 03-31 10:19

    激光器基础---激光

    图1:在典型的气体激光器中,增益介质呈细长的圆柱形。腔体由两个镜子限定。一种是部分反射,允许输出光束逃逸 激光腔或谐振器是系统的核心。在某些高增益装置(如准分子激光器)中,通过一组受激原子或分子的单
    的头像 发表于 03-03 09:06 980次阅读
    <b class='flag-5'>激光</b>器基础---<b class='flag-5'>激光</b>腔

    通过Arduino Nano Matter开发板构建智能卷帘系统

    在本指南中,您将学习如何通过Arduino NanoMatter开发板和板上的Silicon Labs(芯科科技)MGM240S多协议无线模块来构建一个智能卷帘系统。该系统可通过 Amazon
    的头像 发表于 02-28 09:46 914次阅读
    通过<b class='flag-5'>Arduino</b> Nano Matter开发板<b class='flag-5'>构建</b>智能卷帘系统

    请问激光投影中激光光源能否像LED一样瞬时开关?

    我们团队在做能够消除激光散斑的激光投影装置,用的是DLP投影光路,目前使用的是DLPLCR6500EVM。 我们用三基色激光做光源,三种颜色的光先混合成白光,然后再通过色轮照射到DMD芯片上。但是
    发表于 02-28 07:11

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

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

    开源项目!手把手教你制作一个互动式LED墙壁时钟!

    在这篇教程中,将教你使用Arduino创建一个互动式LED墙壁时钟。这个项目结合了创意和技术,设计出一个功能性强且视觉效果惊人的时钟,它配备了互动式的LED灯。无论你是Arduino的新手还是已有
    发表于 02-08 17:47

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

    CAN(Controller Area Network)总线是一种常用于汽车和工业控制系统的串行通信协议,以其高可靠性和实时性而闻名。Arduino,作为一种流行的开源微控制器平台,可以通过附加
    的头像 发表于 12-23 09:06 2813次阅读

    Arduino采集雷达模块数据与串口绘图

    Arduino采集雷达模块数据与串口绘图
    的头像 发表于 12-14 11:44 1206次阅读
    <b class='flag-5'>Arduino</b>采集雷达模块数据与串口绘图

    Arduino Nano Matter开发板正式上市

    Silicon Labs(芯科科技)和Arduino在近日共同宣布Arduino Nano Matter开发板现已正式上市。这是延续今年3 月芯科科技和Arduino释出Arduino
    的头像 发表于 12-10 13:50 1429次阅读

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

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