您無聊嗎?還可以建造一個激光炮塔。您知道嗎?一個會 pew pew 發(fā)射,向許多不同方向發(fā)射紅光的光束,甚至可能會扔進(jìn)煙霧機(jī)嗎?是的,其中之一。
您需要什么
2個伺服器
激光模塊,例如該傳感器套件
壓電蜂鳴器或其他小型輸出設(shè)備
用于固定
長母-公跳線以及常規(guī)跳線的金屬電纜扎帶
可選地,需要一臺煙霧機(jī)–激光的功率非常低,因此即使在黑暗的房間中也無法看到無煙的光束。

構(gòu)建計劃
轉(zhuǎn)塔的基本思想是將激光模塊放在一個伺服器的頂部以提供水平旋轉(zhuǎn)。然后將該封裝安裝到另一個呈90度角放置的伺服器上,以提供垂直移動。我們有一個壓電揚聲器來提供 pew pew 聲音效果,我正在扔煙機(jī)以達(dá)到良好的效果。
伺服測試
視您的伺服器而定,導(dǎo)線的顏色可能會有所不同,但是通常:
紅色是正極線,在我的兩個伺服器上,它都是三芯線的中心-連接到+ 5v
棕色或黑色是負(fù)極,要連接到Arduino的GND。
白色或橙色是信號線,要連接到具有PWM功能的數(shù)字I/O針(在下面的演示中為9和10)。
連接好兩個伺服器后,請上傳以下示例代碼。我已經(jīng)命名了一個伺服“ hori”來控制水平運動,另一個命名為“ vert”。每個人都應(yīng)執(zhí)行全方位的運動掃描(在我的情況下約為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
}
}
一切都好嗎?然后繼續(xù)前進(jìn)。
測試激光和 Pew Pew 聲音
激光模塊就像一個LED,但是模塊中內(nèi)置了一個電阻器。因此我們可以將其直接連接到數(shù)字I/O-非常簡單。如果您使用的激光模塊與我相同,則“ – ”將進(jìn)入 GND , S 將進(jìn)入引腳12。上面的示例代碼使第12針成為輸出:
int laser = 12;
pinMode(laser,OUTPUT);
然后使用標(biāo)準(zhǔn)的 digitalWrite()方法在每個循環(huán)中使該引腳閃爍,每次循環(huán)閃爍。
我們將僅使用PWM以舒適的聲音水平驅(qū)動壓電蜂鳴器-如果需要,您可以嘗試使用音調(diào)庫,但是我只需要一個簡單的噪音即可。將黑線接地,將紅線連接到引腳11。在相關(guān)引腳上定義您的蜂鳴器,設(shè)置為輸出模式,然后使用 analogWrite(buzzer,100)進(jìn)行激活(或您想要的最多254個數(shù)字);和 analogWrite(buzzer,0)(關(guān)閉模擬音頻)。
完整的示例代碼已修改為掃描兩個伺服,激活激光并播放令人討厭的聲音。
您的所有組件都應(yīng)該正常工作-現(xiàn)在我們需要將所有組件綁在一起。
創(chuàng)建轉(zhuǎn)塔
使用電纜扎帶,將一個伺服器連接到另一個;哪一個都沒關(guān)系,只需確保其中一個在水平方向上移動而另一個在垂直方向上移動即可。如果角度不正確,您可以在測試期間拔下轉(zhuǎn)子葉片并重新安裝。
使用一些堅固的造型線來固定激光器
最后,我將整個設(shè)備連接到帶有更多電纜扎帶的桌腿上一點廢木頭。
對炮塔編程
我不認(rèn)識你,但是我的想法是激光炮塔來自無數(shù)的科幻電影和《星際迷航》劇集。總是有人會飛越炮塔,而 pew-pew 的小射門會以掃掠的模式飛出,總是太慢了幾毫秒,所以我們的主角實際上并沒有受到打擊。這就是我要復(fù)制的內(nèi)容,盡管可以隨意調(diào)整主例程以適合您對轉(zhuǎn)塔應(yīng)該做什么的想法。
這是我最終在主循環(huán)中使用的偽代碼:
隨機(jī)化脈沖之間的時間,以及每次射擊之間的時間。
隨機(jī)化每個伺服,垂直和水平方向的開始和結(jié)束位置。
隨機(jī)化拍攝數(shù)量。
計算出每次拍攝后的變化程度,以開始和結(jié)束位置之間的差除以拍攝數(shù)量。
將伺服器移至開始位置,并稍等一會兒到達(dá)目的地(100毫秒)
循環(huán),直到拍攝完所有鏡頭為止,每次按先前計算的方式稍微移動伺服器;
重復(fù)。
我還添加了一個單獨的 fire()方法來稍微構(gòu)建代碼更好。調(diào)整所有 random()函數(shù)的范圍,以加快或減慢每個參數(shù);或增加鏡頭數(shù)量以增加舞蹈俱樂部的氛圍。向下滾動以查看操作中的代碼的視頻!
#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);
}
操作中
我認(rèn)為這個小玩具沒有實際用途,但這確實很有趣,而且您可以調(diào)整很多變量以獲得理想的效果。也許對于自制樂高電影會派上用場嗎?
責(zé)任編輯:wv
-
激光
+關(guān)注
關(guān)注
21文章
3719瀏覽量
69861 -
Arduino
+關(guān)注
關(guān)注
190文章
6529瀏覽量
197563
發(fā)布評論請先 登錄
[VirtualLab] 激光引導(dǎo)無焦系統(tǒng)的分析與設(shè)計
Inces-Gaussian光束產(chǎn)生渦旋陣列激光光束的觀測
Inces-Gaussian光束產(chǎn)生渦旋陣列激光光束的觀測
光與電的毫秒級博弈:構(gòu)建基于LTP激光位移技術(shù)的真空斷路器機(jī)械特性“數(shù)字孿生”圖譜
ToF 技術(shù)再進(jìn)化:面陣固態(tài)激光雷達(dá)在各環(huán)境中的可靠性
自動駕駛激光雷達(dá)可以安裝在哪些位置?
如何用Arduino Nano/UNO R3開發(fā)板給另一個Arduino IDE不能下載的Arduino Nano/UNO R3開發(fā)板重新燒錄引導(dǎo)程序bootlaoder
全固態(tài)激光雷達(dá)為什么遲遲未來?其技術(shù)難點是什么?
Arduino與LabVIEW聯(lián)合編程指南
激光器電源技術(shù)電子書
免費分享Arduino入門+進(jìn)階(全套例程+書籍)
如何使用Arduino構(gòu)建激光炮塔
評論