我們做的是8x8x8 LED光立方,他就像是一個立體的顯示器,不同於平面的LED矩陣,呈現的動畫非常酷,但8x8x8就意味著有512顆LED,這是這個專題最麻煩的地方,要處理很多LED,在製作上會花比較多時間,需要耐心完成。
剛看到這個專題可能會覺得有點複雜,但透過分成不同步驟,就能夠清楚的了解原理及構造。
以下會有led光立方運作原理,電路的解說,並且如何焊接光立方,程式的解說,循序漸進地完成。
內容目錄
材料
材料名稱 | 數量 | 蝦皮購買連結 |
---|---|---|
Arduino uno | 1 | 【樂意創客官方店】《附發票》《送USB傳輸線》Arduino UNO R3 開發板 |
3mm LED | 512 | 方形LED發光二極體2*3*4MM 藍色藍光(50個) |
470電阻 | 64 | 【樂意創客官方店】10個 1/4W 0.25w電阻 色環電阻 |
電路板 | 1 | 單面噴錫綠油玻纖萬用板 PCB電路板 |
木板 | 4~5片 | |
74HC595 | 9 | 74HC595 SN74HC595N 1組10個+16Pin IC插座10個 位移記錄器 串並列暫存器 |
電晶體 PN2222A | 16 | |
銅絲 21 cm | 144 條 |
Arduino 光立方 如何運作?
控制LED直覺是”就直接接Arduino輸出就好啦”,有幾顆接幾顆,但是現在我們8x8x8LED光立方,總共會有512顆LED,Arduino要有512個輸出腳位,我想應該沒有人有看過吧。
那我們要怎麼解決一次控制512顆LED呢?
實際上我們是不會一次控制512顆LED的,而是控制一層8x8LED平面,會需要64個輸出腳位,雖然還是蠻多的,但已經比512個少很多了,再搭配移位暫存器,可以讓電路化簡很多(這在後面說明)。
現在我們有8層LED平面,一開始我只控制第一層的圖形,接著關閉地一層,然後控制第二層圖形,接著依序第三層、第四層…第八層,當層與層之間的更換間隙變得很快,就會造成視覺暫留的現象,在我們看起來就會像8層同時在亮。
LED光立方成像方式:
LED光立方 正極、陰極 配置
正極配置 負極配置
- LED正極: 垂直一條正極皆是相連,總共有64隻腳。
- LED負極: 同一層負極皆是相連,8層分開,共有8隻腳。
第一層: 正方形外圍一圈亮➡正極外圍一圈拉高電位,第一層負極拉低電位。 第二層: 正方形四個角落亮➡正極四個角落拉高電位,第二層負極拉低電位。 電三層: 同上 第四層: 同上 第五層: 同上 第六層: 同上 第七層: 同上 第八層: 正方形外圍一圈亮➡正極外圍一圈拉高電位,第八層負極拉低電位。 上面圖形,最後會呈現甚麼? 答案就在前面的影片中。 每層依照不同的圖形去亮,當掃描每層夠快的時候,畫面就像是同時亮。
如何使用74HC595來簡化電路?
先簡單介紹74HC595是甚麼東西?
他稱作移位暫存器,如同字面所說,他可以暫存8隻輸出腳位的HIGH、LOW狀態,而只需要透過3隻腳給他訊號,他能依照你給的訊號來暫存8隻輸出腳位的狀態。
74HC595教學影片:
我們會使用8顆74HC595來控制64支正極,以及1顆74CH595控制8層負極的狀態。
而我們arduino只需要接三支腳位,就能控制上面總共72支腳,大大減少了arduino的輸出腳位。
電路連接的部分會在後面做解說。
建立LED光立方
LED基底模板
再焊接LED前,我們必須要有一個基底模版,使我們能夠整齊的焊好每個LED。
而在每顆LED之間,間距大約2.5cm,這個間距會影響到光立方透視的表現。
如果間距太小,透視效果不好,可能呈現的圖形會都擠在一起看不清,間距寬則反之。
整直銅絲
我使用的是直徑0.8mm的銅絲,由於他一開始是一捆的,在剪下來的時候會呈現彎曲或不直的狀況。
那麼解決方式是將銅絲裁好要的長度,一端夾在電鑽上,另一端用尖嘴鉗夾好,將電鑽啟動,在銅絲旋轉時,讓銅絲繃緊保持張力,之後的銅絲就會很直了。
LED焊接
在焊接之前,要先將LED負極折90度。
將LED放入模板,將LED負極及銅絲都焊接在一起。
先將8層LED各別完成
將垂直的銅絲焊接上LED正極。
光立方8層焊接完成
焊接電線
在焊接電線前,補鑽8個孔在模板上,用來將8層LED的地線穿過。
將光立方的64個正極卡進模板洞裡。
將電線焊接上去,並以每排為一個單位整線。
將各層焊接地線(白色線),並穿過先前鑽的孔。
再將板子後面的地線焊上黑色線延伸。
電路板layout
這裡參考HARRY LE製作光立方影片的電路圖。
光立方電路圖連結,按照電路圖將元件焊上電路板。
再接著將光立方LED正極及負極焊接上電路板。
以下為我自己焊接的電路板,有點亂請見諒。
焊接完後,確認線路無問題,接上arduino,進行測試。
全亮測試 圖案測試
測試影片: 程式參考 HARRY LE的CUBE.ino
組裝底座
先量好外圍尺寸,裁出所需尺寸的木板。
將面板的部分鑽孔,黏上指示用的LED燈及開關,並且將線焊接好。
側板要先開洞,是為了讓之後傳輸線能從外部連接arduino。
完成以上就可以將所有木板用白膠黏合,並找重物壓緊,然後放置等待。
前面面板 側板開口 arduino放置位置 使用重物壓緊 初步完成狀態
接著將底座塗上護木漆,讓整體看起來比較有質感。
arduino 傳輸接口 內部線路(偏亂) 最後完成品
完成品測試影片:
Arduino動畫程式
目前參考 HARRY LE 的程式 → 點此連結CUBE.ino
在這裡先不對程式做解說,未來有相關的主題再來做分享。
喜歡的朋友歡迎在下方留言或分享,謝謝。
好奇這東西做了多久
這個東西真的搞了很久,我大部分都假日做,大約4個週末吧。最花時間的是焊接,超多LED要焊的哈哈哈。
可以借我看電路的lay out嗎?抱歉我不知道要怎麼佈線
我其實就像文章中的圖片,用萬用板把元件簡單排列先固定好後,在依照電路圖拉線,也沒有特別去設計甚麼佈線的。
可以買2N2222A的來做嗎
都是NPN的就可
請問電阻是要買470歐還是220歐,還有電阻值是怎麼算出來的
led藍光的電壓約3-3.4V,led啟動電流為0.02安培,而電源若為5V
(5-3.4)/(0.02*64)=1.25,所以電阻是1.25,是這樣算嗎?
這裡的一個led是串連一個電阻,然後接在移位暫存器,
因此(5-3.4)/0.02=80ohm,也就是電阻最少要用80ohm才不會讓led燒毀,
我參考的電路圖作者是用220ohm,但我是用470ohm,可能會比較暗一點,但也點得起來。
另外分享一下我的想法,假設用80ohm,那麼一個led會產生20mA,64個就有1.28A,輸入電流會需要比較大,這就要考慮到輸入電源的規格,我參考的電路圖作者是有用額外的電源供應器來供應的。
如果你照我文章中的去做,還是建議用470ohm,因為我這樣用是有成功的,如果覺得led不夠亮,再換成220ohm的去試吧。
可以給電晶體腳位嗎?
您好,我想請問一下,
如果要讓此立方體隨著音樂擺動應該要怎麼結合呢?
不好意思我不是本科生,目前正自學Arduino中,
麻煩賜教了
你可以試著查詢”Arduino頻譜led”關鍵字看看,平時看到隨著音樂擺動的燈條,就是將音樂訊號轉換成其組成頻率圖像,隨時間變化而使led燈條跳動。
請問如果程式沒問題(跟上面一樣),但是跑出來的結果,有時候整個會亂打,跑出程式沒有的圖案,可能是什麼原因?
可以觀察看看當亂打時,arduino是不是重新reset,reset時傳出一些雜訊所以會不規則亮,有可能是突然電流過大導致arduino reset。
請問電流太大如何解決
上面電路圖中,移位暫存器的Vin是5V,把這5V不要接到Arduino的5V輸出,改用5V的電源供應器額外供電試試。