第1步:你需要什么。
到讓你的bug閃爍,你需要這些組件:
Arduino。我從Nano開始,但任何與Arduino兼容的微控制器都可以。
黃色LED,5毫米。您最多可以使用其中的6個(gè)。
電阻器。每個(gè)LED需要一個(gè)電阻來限制電流。我用了470歐姆,但是150歐姆以上的任何東西應(yīng)該可以保護(hù)你的微控制器。
面包板。
跳線。
要完成后院項(xiàng)目,您需要:
防風(fēng)雨項(xiàng)目箱。
帶連接器的9伏電池。 (請參閱本節(jié)底部的注釋。)
切換。 (我選擇了這些防水開關(guān)。如果你不在外面使用它,任何開關(guān)都可以。)
幾碼線將LED放在花園周圍。我每個(gè)LED使用大約10英尺的Cat5以太網(wǎng)線。
小型面包板或一些穿孔板。
LED導(dǎo)線穿過的防風(fēng)雨電纜接頭。 (如果你不在外面也使用它,你可以省略它。)
熱縮管以保護(hù)你的LED蟲屁股。
綠色鉤環(huán)(即魔術(shù)貼)條帶將LED螢火蟲固定在花園中的植物和柱子上。
將組件插入小型面包板的公頭。
工具:
鉆頭項(xiàng)目框。 (利用這個(gè)機(jī)會(huì)給自己一個(gè)很好的步驟。你會(huì)很高興你做到了)。
熱膠槍。
烙鐵。
旋轉(zhuǎn)工具(即Dremel),用于在需要時(shí)在工程箱中劃出空間。
這里有一些注意事項(xiàng):
1。電池選擇是為了快速簡便的啟動(dòng)。永久使用9伏電池有點(diǎn)浪費(fèi)。你最好使用4x AA電池座以延長使用壽命(但是你需要一個(gè)更大的項(xiàng)目盒來安裝它)。
2。如果您選擇為導(dǎo)線解構(gòu)Cat 5以太網(wǎng)電纜,請確保它們是銅芯并將它們整齊地包裹在某些PVC周圍,以便在您工作時(shí)保持整齊。我再次使用每個(gè)LED大約10英尺的電線。如果你想要遠(yuǎn)遠(yuǎn)地?cái)U(kuò)散燈光,一定要使用更長的電線!
3。最后,我提供的所有鏈接僅僅是建議。在構(gòu)建或購買任何東西之前,請仔細(xì)閱讀整個(gè)Instructable,因?yàn)槟鷮⒏玫亓私饽M绾斡H自前進(jìn)。
第2步:構(gòu)建電路。
此項(xiàng)目使用脈沖Arduino上的寬度調(diào)制引腳。微控制器有6個(gè)這樣的引腳,歡迎您隨意使用。電路非常簡單。將脈沖寬度調(diào)制(PWM)引腳D3,D5,D6,D9,D10和D11的所有電源連接到LED的正極端。將負(fù)端連接到電阻器然后連接到公共地。 (電阻可以放在LED的前面或后面。除非你想要防止更高電流的短路,否則沒有區(qū)別。)我提供了一些原理圖來幫助接線。 (使用Fritzing設(shè)計(jì)軟件創(chuàng)建的圖表。)
第3步:代碼。
如果您是一位經(jīng)驗(yàn)豐富的程序員,那么‘我會(huì)發(fā)現(xiàn)這段代碼過于簡單。這是一個(gè)很好的代碼開始學(xué)習(xí),因?yàn)樗蚰榻B變量,pinmodes,函數(shù)甚至隨機(jī)生成器的使用。代碼并不像它那樣緊湊,因?yàn)槲掖_信使用數(shù)組等可以實(shí)現(xiàn)相同的效果。
代碼注釋列出了每個(gè)部分的邏輯。整個(gè)代碼都嵌入在這里,您可以下載下面的草圖。
/*
This script flashes 6 LEDs (yellow, of course) in random order
at random intervals using PWM.
Each LED is controlled by it’s own function.
*/
int led1 = 3; // LED connected to PWM pin 3, etc. I used all 6 PWM pins.
int led2 = 5;
int led3 = 6;
int led4 = 9;
int led5 = 10;
int led6 = 11;
long randnum; // randnum controls the time interval between flashes and
long randbug; //randbug controls which bug lights up.
void setup() {
pinMode(led1,OUTPUT); //Setting all PWM pins as outputs.
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4,OUTPUT);
pinMode(led5,OUTPUT);
pinMode(led6,OUTPUT);
}
void loop(){
randbug = random(3,12); //randbug randomly chooses a function to execute,
//thus randomly chooses a bug to light up.
if (randbug == 3) {
bug1();
}
if (randbug == 5) {
bug2();
}
if (randbug == 6) {
bug3();
}
if (randbug == 9) {
bug4();
}
if (randbug == 10) {
bug5();
}
if (randbug == 11) {
bug6();
}
}
/*
* Each of these functions work the same way. ‘for loops’ increase then decrease
* the output of that pin to control LED brightness.
* ‘randnum’ is a random time interval between 10 and 3000 ms
* and chooses a time interval between bug flashes.
* ‘delay 10’ is just for the fade effect.
*/
void bug1(){
randnum = random(10, 3000);
for(int fadeValue = 0 ; fadeValue 《= 255; fadeValue +=5) {
analogWrite(led1, fadeValue);
delay(10);
}
for(int fadeValue = 255 ; fadeValue 》= 0; fadeValue -=5) {
analogWrite(led1, fadeValue);
delay(10);
}
delay (randnum);
}
void bug2() {
randnum = random(10, 3000);
for(int fadeValue = 0 ; fadeValue 《= 255; fadeValue +=5) {
analogWrite(led2, fadeValue);
delay(10);
}
for(int fadeValue = 255 ; fadeValue 》= 0; fadeValue -=5) {
analogWrite(led2, fadeValue);
delay(10);
}
delay (randnum);
}
void bug3() {
randnum = random(10, 3000);
for(int fadeValue = 0 ; fadeValue 《= 255; fadeValue +=5) {
analogWrite(led3, fadeValue);
delay(10);
}
for(int fadeValue = 255 ; fadeValue 》= 0; fadeValue -=5) {
analogWrite(led3, fadeValue);
delay(10);
}
delay (randnum);
}
void bug4(){
randnum = random(10, 3000);
for(int fadeValue = 0 ; fadeValue 《= 255; fadeValue +=5) {
analogWrite(led4, fadeValue);
delay(10);
}
for(int fadeValue = 255 ; fadeValue 》= 0; fadeValue -=5) {
analogWrite(led4, fadeValue);
delay(10);
}
delay (randnum);
}
void bug5() {
randnum = random(10, 3000);
for(int fadeValue = 0 ; fadeValue 《= 255; fadeValue +=5) {
analogWrite(led5, fadeValue);
delay(10);
}
for(int fadeValue = 255 ; fadeValue 》= 0; fadeValue -=5) {
analogWrite(led5, fadeValue);
delay(10);
}
delay (randnum);
}
void bug6() {
randnum = random(10, 3000);
for(int fadeValue = 0 ; fadeValue 《= 255; fadeValue +=5) {
analogWrite(led6, fadeValue);
delay(10);
}
for(int fadeValue = 255 ; fadeValue 》= 0; fadeValue -=5) {
analogWrite(led6, fadeValue);
delay(10);
}
delay (randnum);
}
第4步:構(gòu)建框。
一旦你用代碼刷新你的Arduino并得到你的螢火蟲以你喜歡的方式工作,你可能想把它們放在花園里;這意味著一個(gè)項(xiàng)目盒和一些熱縮,以保持Arduino和LED干燥。讓我們來吧!
第5步:構(gòu)建Bug Butts!
將LED引線修剪約5mm。
剝?nèi)ゲ⑹褂媚阏谑褂玫碾娋€的末端,也約5毫米。
在每個(gè)電線末端滑動(dòng)1mm熱縮管。
將LED焊接到電線上。 (此時(shí),你應(yīng)該選擇你的對中的哪一根線是正面的,哪一根是負(fù)的。我選擇實(shí)線為正線,白線為負(fù)線。在整個(gè)項(xiàng)目中保持該策略以避免后來的頭痛!)
將熱量一直向上滑過裸線和LED引線。在它們上面快速燃燒,將它們收縮到電線上。
在LED上滑動(dòng)另一塊熱縮管,并將LED透鏡伸出末端并將其熔化到位。
將幾片熱縮管滑到整個(gè)長度上,然后每隔幾英尺將其熔化,以保持線材整潔。
步驟6:準(zhǔn)備項(xiàng)目框。
使用帶有砂磨鉆頭的旋轉(zhuǎn)工具清除任何不需要的東西塑料在您的項(xiàng)目框中。 (小心不要切掉任何可能需要將盒子重新放在一起的螺絲安裝座。)
確定您需要開關(guān)的位置以及LED線是否出來。我建議雙方使用符合您需求的東西。
使用合適尺寸的鉆頭為電纜接頭和開關(guān)打孔。
注意:在上面的照片中,你會(huì)看到我做了一個(gè)“假人”電纜。”這是一組6對我用于LED的電線,它們通過熱縮將它們捆在一起。我用它來確保電纜接頭與實(shí)際的電纜束很好地配合,并且一旦開關(guān),電纜接頭和蓋子打開,也要測試盒子的防水性能。 (在6英寸水中淹沒24小時(shí)后,里面的水分很少。我很樂意將這個(gè)盒子稱為“耐候性”。)
第7步:帶來電源!
通過粗略放置所有電池和開關(guān)線來確定您需要多少電池和開關(guān)線才能到達(dá)Arduino項(xiàng)目框中的三個(gè)組件。修剪開關(guān)和9V電池連接器的電線。剝開并涂上兩端。將一些熱收縮滑動(dòng)到下一步。
從條帶上切掉兩個(gè)插頭(但要將它們粘在一起)。
將9V電池連接器的紅色引線焊接到開關(guān)的一端。將開關(guān)的另一端焊接到公頭插針。將黑色電池引線焊接到另一個(gè)插頭引腳。
如上圖所示,插頭引腳將進(jìn)入面包板,為VIN(正極)和GND(負(fù)極)的Nano供電。 VIN引腳可以處理7到12伏電壓。如果您計(jì)劃以9V電池以外的方式為Arduino供電,請使用其他電源引腳。
步驟8:如果需要修改Nano。
因?yàn)槲业捻?xiàng)目框很淺,我需要移除ICSP插頭引腳才能適應(yīng)。這些引腳是Arduino的輔助接口。刪除它們不會(huì)損壞您的Nano,因?yàn)槟冀K可以通過USB端口加載腳本。
注意:如果您的Nano需要焊接接頭引腳,請?jiān)诮M裝Arduino時(shí)省略這些引腳。
步驟9:連接內(nèi)部。
將電纜壓蓋端口連接到為其鉆孔的項(xiàng)目盒中。如果您對如何使用電纜接頭感到困惑,我在YouTube上發(fā)現(xiàn)的這個(gè)視頻顯示正在組裝的視頻。 (快進(jìn)到0:57。)你可能有橡皮墊圈。這是在項(xiàng)目箱和電纜密封套的外部螺母之間進(jìn)行的。
收集LED線的松散端。花這個(gè)時(shí)間將它們修剪成相等的長度,剝?nèi)ゲ⑼可蟽啥恕⒍瞬看┻^電纜密封套的蓋子并使用一塊熱縮端將端部捆在一起,留下足夠的長度以到達(dá)盒子內(nèi)側(cè)的面包板。
將電線束通過電纜壓蓋端口送入工程箱并扭轉(zhuǎn)壓蓋,將電線鎖定到位,最好圍繞用于將它們捆在一起的熱縮器周圍。
將地線與正極線分開(記住您之前選擇的那些)。將所有接地線焊接在一起。從該束中連接一根短導(dǎo)線,并用1個(gè)插頭完成。使用熱縮保護(hù)您的裸露焊點(diǎn)。
每根正極線兩端的焊接公頭。再次,使用熱縮。
將正端公頭插入面包板,連接到Arduino上的PWM引腳。
將公共地插入面包板,使其通過限流電阻,然后通過Arduino上的GND。
放入電池并將開關(guān)穿過先前鉆過的盒子中的孔。將橡膠墊圈安裝在項(xiàng)目盒和螺帽之間。將電源線插入面包板。
將蓋子卡在盒子上。你已經(jīng)完成了!
注意:注意在原理圖和開發(fā)階段我每個(gè)LED使用一個(gè)限流電阻。通常情況下,每個(gè)LED應(yīng)該通常使用自己的電阻,一次點(diǎn)亮多個(gè)LED。該代碼不允許一次點(diǎn)亮多個(gè)LED,因此只使用一個(gè)電阻就可以保護(hù)Arduino。這也節(jié)省了小面包板上的空間,或者使用串聯(lián)電阻器對每個(gè)LED進(jìn)行時(shí)間焊接。那說。..。..警告!!!如果您計(jì)劃更改代碼以便一次點(diǎn)亮多個(gè)LED,則每個(gè)LED需要單獨(dú)的電阻。
步驟10:使用它。
使用Velcro皮帶或少量熱膠將LED固定在植物,柵欄,粉紅色的火烈鳥或院子里的任何其他東西上。將它們?nèi)M(jìn)酒架,窗簾后面,甚至將天花板上的電線懸掛在黑暗中進(jìn)行3D浮動(dòng)效果!這些對于派對,婚禮,電影和攝影來說都是一個(gè)很好的選擇。
步驟11:更進(jìn)一步。..。..
如前所述,這是該項(xiàng)目的早期版本,但它充滿了潛力!通過連接移位寄存器來運(yùn)行更多的LED(請參閱JColvin91的說明,了解具體方法。)添加一個(gè)光傳感器,太陽能充電器和定時(shí)器,用于“設(shè)置并忘記它”功能!與代碼混淆,為bug添加自己的耀斑。分享您的成就和享受!!
-
Arduino
+關(guān)注
關(guān)注
188文章
6491瀏覽量
190094
發(fā)布評論請先 登錄
蔚來公司5月交付新車23231臺(tái)
免費(fèi)分享Arduino入門+進(jìn)階(全套例程+書籍)

《ESP32S3 Arduino開發(fā)指南》第二章 Arduino基礎(chǔ)知識
今日看點(diǎn)丨臺(tái)積電美國三座新廠產(chǎn)能 預(yù)訂一空;蔚來重大調(diào)整!三品牌全面整合
北斗星通旗下芯與物和哈啰達(dá)成戰(zhàn)略合作
蔚來亮相2025上海國際汽車工業(yè)展覽會(huì)
地平線與蔚來首款合作車型——firefly螢火蟲正式上市!

評論