設(shè)計(jì)一個(gè)顏色可調(diào)的Minecraft燈籠
對(duì)于這個(gè)萬圣節(jié),我在一個(gè)有趣而簡(jiǎn)單的萬圣節(jié)項(xiàng)目中融合了Minecraft的創(chuàng)意塊狀世界和彩色RGB led的幽靈般的光芒?!邦伾烧{(diào)的我的世界燈籠”是一個(gè)重建視頻游戲《我的世界》中標(biāo)志性燈籠的項(xiàng)目。它允許用戶將光的顏色更改為任何色調(diào),而不是僅限于標(biāo)準(zhǔn)的黃色或橙色。
組件的要求
對(duì)于這個(gè)項(xiàng)目,我們需要:
?1 x Arduino Nano
?2 x WS2812B 16 led新像素環(huán)
?4 x 10kΩ旋轉(zhuǎn)電位器
?強(qiáng)烈建議使用1 x 1000μF電容器來平滑電壓尖峰和下降
?1 x 100Ω串聯(lián)在數(shù)據(jù)線上的電阻,以限制電流和抑制信號(hào)反射
?1 * SPST交換機(jī)
?1個(gè)18650電池和支架
?1個(gè)TP4056電池充電模塊
?1 x dc - dc降壓轉(zhuǎn)換器
?跳線和面包板
?以及用于打印所述外殼的3D打印機(jī)
接線圖
該裝置由三個(gè)簡(jiǎn)單的電路組成:首先是電源電路:一個(gè)為Arduino Nano2充電和運(yùn)行的電池。其次,控制電路:電位器向Arduino3饋送信號(hào)。第三,照明電路:NeoPixels,它根據(jù)從Arduino接收到的指令發(fā)光:Arduino通過模擬引腳讀取電位器,產(chǎn)生從0到1023的值。然后將此范圍映射為0-255以符合Arduino庫。轉(zhuǎn)換后的信號(hào)依次發(fā)送到led,從第一個(gè)到最后一個(gè)點(diǎn)亮它們。信號(hào)完整性需要兩個(gè)關(guān)鍵組件:最靠近負(fù)載的1000μF電容器以穩(wěn)定電壓,以及數(shù)據(jù)線上的100Ω電阻,以防止電流浪涌并抑制信號(hào)噪聲。一般來說,大寫代表三種情況。提供一個(gè)電流儲(chǔ)存器以保持電壓穩(wěn)定,旁路噪聲到地,并在阻擋直流的同時(shí)傳遞交流信號(hào)。第三個(gè)詞在這種情況下沒有用,但另外兩個(gè)有用。較高的電帽用作儲(chǔ)層(即1000uf),較低的電帽用于旁路噪聲(0.1uF, 1uF)。根據(jù)經(jīng)驗(yàn),封頂應(yīng)該放在靠近問題發(fā)生的地方[]
代碼
代碼首先包含Adafruit NeoPixel庫,并定義必要的引腳和全局變量。在setup()部分中,我們初始化NeoPixel庫,并立即在整個(gè)LED環(huán)上運(yùn)行彩虹循環(huán)以確認(rèn)其工作。loop()部分連續(xù)讀取電位器值,將其從0-1023范圍映射到0-255。你會(huì)注意到我注釋掉了亮度控制部分。這是因?yàn)椋谖业臏y(cè)試過程中,我發(fā)現(xiàn)NeoPixel庫的亮度設(shè)置按比例縮放了所有RGB值,這大大改變了led的感知顏色和強(qiáng)度。色覺:較低的亮度會(huì)使顏色看起來與預(yù)期的不同功耗:較低的亮度=使用的更少的功率產(chǎn)生熱量:較低的亮度減少熱量眼睛舒適:非常明亮的新像素可能看起來不舒服最后,代碼使用映射的電位器值來設(shè)置像素顏色并更新LED顯示屏。這在電位器和LED輸出之間創(chuàng)建了直接的實(shí)時(shí)控制。
試驗(yàn)板測(cè)試
在將所有內(nèi)容放入機(jī)箱之前,我將它們連接到面包板上以測(cè)試代碼。當(dāng)我打開電源時(shí),你可以看到NeoPixel環(huán)播放一個(gè)小彩虹動(dòng)畫,然后它們就準(zhǔn)備好了。現(xiàn)在,當(dāng)我轉(zhuǎn)動(dòng)這些旋鈕,當(dāng)Arduino讀取電位器值并實(shí)時(shí)更新led時(shí),顏色會(huì)平滑地變化。
三維設(shè)計(jì)
我在微軟3D Builder中為這個(gè)項(xiàng)目設(shè)計(jì)了一個(gè)定制的6部分外殼。你可以從我的GitHub倉庫下載STL文件,并從PCBWay專業(yè)打印它們。該組件包括:1。電池、Arduino和電池充電器等主要組件的底座。用于固定充電模塊的TP4056塞子。四個(gè)支架安裝開關(guān)和電位器。四塊有機(jī)玻璃面板可以分散LED燈并隱藏電子設(shè)備。兩個(gè)支架蓋遮住側(cè)面。在完成設(shè)計(jì)后,我繼續(xù)3D打印組裝所需的所有組件。這些都是我組裝最終單元所需的定制組件。
組裝
打印完所有的3D模型后,我開始組裝電子元件。我將導(dǎo)線焊接到每個(gè)電位器和SPST開關(guān)上,然后將它們安裝到指定的支架上。每個(gè)電位器都是通過擰緊螺絲來固定的,電線穿過支架側(cè)面的一個(gè)小孔。同樣,將開關(guān)壓入其孔中,其導(dǎo)線通過相應(yīng)的導(dǎo)線通道饋送。接下來,我專注于電路的電池充電部分。我將電池焊接到TP4056充電模塊的B+和B-端口上。用藍(lán)色導(dǎo)線將TP4056的OUT-連接到降壓轉(zhuǎn)換器的VIN-,而SPST開關(guān)則連接到控制OUT+和VIN+端子之間的連接。一旦這些連接完成,我將電源組件安裝到設(shè)備的底座上。TP4056模塊是安全的超級(jí)膠塞后,它滑到適當(dāng)?shù)牡胤?,我也超?jí)膠合的立場(chǎng)持有開關(guān)到基地。對(duì)于控制系統(tǒng),我將Arduino的所有必要組件焊接到一個(gè)perfboard上。雖然設(shè)置可能看起來很亂,但最終組裝將是完全封閉的。然后我用熱熔膠把兩個(gè)NeoPixel環(huán)粘在位置上,第一個(gè)粘在底部,第二個(gè)粘在頂部。后超膠第二站我隱藏了電子超膠“側(cè)蓋”到它。
在安裝有機(jī)玻璃面板之前,我用黑色丙烯酸顏料涂上了燈籠的主體。在油漆干了之后,我插入了有機(jī)玻璃面板,并用超級(jí)膠粘住了頂部,完成了建造。
演示
這就是我的最終設(shè)置。這是創(chuàng)建交互式項(xiàng)目的一種經(jīng)典方法,您可以通過旋轉(zhuǎn)旋鈕來改變燈光的行為。微控制器讀取電位器的位置,將其轉(zhuǎn)換為一個(gè)值,然后使用該值來改變有關(guān)新像素的某些東西(例如,亮度,顏色或速度)。這個(gè)項(xiàng)目鼓勵(lì)孩子們嘗試原色,看看他們能創(chuàng)造出什么樣的新色調(diào)。
本文編譯自hackster.io





