碎碎念:
這次颱風真的太猛啦ww
生平第一次看到雨大爆走(像水庫洩洪一樣...)
路上除了雨大之外風也大到一個沒有極限R (一樓的樹葉一大堆被吹到14樓頂樓)... 真的豪厲害
希望之後去高科大不要遇到這麼可怕的暴風雨阿~ 要是學校淹大水就麻煩惹... XD
正文:
這次的 32x16 LED 矩陣主要是要給無用喵箱 (無用箱子) 用的 XDD
無用喵箱大概長這樣...
這是由一名日本網友 回路師(Kairoshi)所製作的
.
原本可以去露天買兩張現成的 16x16 LED 矩陣將它們串連起來直接作 32x16 的 LED 矩陣來用,但廢材的想藉此機會來 Hack 一下 LED 矩陣是如何製作的,所以就傻傻的花了快兩個禮拜的時間在這上面 QAQ (這也太久了,還是買露天現成的比較快的說ww)
.
因為喵箱的內部空間有限,所以這塊 LED 32x16 矩陣有盡量將體積縮小再縮小,但不管怎麼縮小總覺得露天買的還是比自己做得還薄阿... 哭哭
.
這次買的電木板是在光華金華電子購買的,兩張台幣120元(正面、反面)
.
這次的主角 LED 矩陣,廢材的買了 8 個 8x8 的 LED 矩陣來拼成 32x16 LED 矩陣
一個露天賣台幣35元 (左邊 分開來、右邊 拼在一起)
這是跟之前實驗過的 8x8 LED Matrix 規格、用法都一樣:
http://blog.udn.com/awei0905/26733804
.
將這 8 個 8x8 LED 矩陣焊接到電木板上,焊好後發現其實每個 8x8 LED 矩陣 之間都會有小縫隙,感覺怪怪的 ('・ω・')...
縫隙超明顯的...
(最後成品並沒受這些縫隙所影響,不去特別注意這些縫隙的話根本不會發現它們的存在...)
.
再來就是 LED 矩陣的佈線了,線材的部分使用 OK 線
因為 LED 矩陣打算用水平掃描的方式顯示,所以焊在電木板上的 LED 矩陣每一行個別接在一起(x軸,x0~x7要分別接在 8x8 LED 矩陣的 H1~H8,以此類推...),然後每一列也個別接在一起(y軸,y0~y7要分別接在 8x8 LED 矩陣的 L1~L8,以此類推...),像這樣... (畫得有點醜請見諒)
.
焊接出來大概這樣... (也順便將連接控制電路的排針給焊上了)
.
但好像忘了什麼?
... 沒錯,當時忘記把限流電阻給焊上去了...
首先將每個 x,y 軸的接線都拉到排針,然後補焊漏掉的限流電阻,焊在每個 x 軸的地方(串聯),而 y 軸則不需要焊,不然矩陣可能會有亮度不均勻的問題!
*排針的部分原本是 2*20 針,但後來發現不夠用就給他再多加 1*20 針,就變成 3*20 針了 (最後有多出 12 針沒有用到) 限流電阻原本想用排阻但太貴了所以改用 0.25W 的普通電阻
.
排針的腳位圖則用 Excel 來表示,N/C 表示該腳位沒用到
.
接著是控制電路,將之前已經焊好的 Arduino UNO 來使用
焊接 Arduino UNO 到電木板上的心得文:
http://blog.udn.com/awei0905/27418285
因為 LED 32x16 矩陣需要 48 個輸入腳位來控制它,而 Arduino UNO 原本的輸出腳位數量並不夠,所以這時就需要 74HC595 來擴充它的輸出腳位了
用 74HC595 控制 24 顆 LED 輸出心得文:
http://blog.udn.com/awei0905/26967572
.
再來就是焊接控制電路,控制電路看起來很複雜其實未必~
電路中主要有 Arduino UNO、74HC595(擴充輸出腳位) 和 uln2003a(達靈頓陣列 IC )。
74HC595 在之前控制 24 顆 LED 輸出提過了,那這次來提 uln2003a 吧
.
uln2003a 是顆達靈頓電晶體陣列 IC,由 7 顆 NPN 達林頓電晶體所組成,可以承受 500mA 及 50V 的輸出,通常都用來控制大電流的輸出
下面這是 uln2003a 的 腳位配置圖(左) 及 結構圖(右)
(圖片來自 http://www.ti.com/lit/ds/symlink/uln2003a.pdf)
uln2003a 需要注意的就是結構圖中的反向器,這反向器與一般的反向器不太一樣...
一般的反向器:
輸入 high => 輸出 low
輸入 low => 輸出 high
uln2003a 結構圖的反向器實際上:
輸入 high => 輸出 low
輸入 low => 輸出為斷路,並沒有任何輸出 (空接,不會輸出 high 或 low)
所以如果要使用反向器的話請不要拿 uln2003a 來用,因為輸入 low 它也不會輸出 high
.
控制電路的電路圖使用 eagle 來繪製
.
電路圖畫好後在麵包板上先接一次電路確定電路都能正常運作 (因為用 Arduino UNO 開發板比較方便接線所以沒用自己焊的 Arduino UNO 板板)
.
這次接麵包板非常順利,第一次接所有功能都正常,不像之前接電路都要接好幾次才會成功XDD
另外有設計一個 5x2 的雙排排針來方便與外面的 IC 溝通或燒入程式碼,不然每次要燒入程式碼都要將控制電路板從 LED 矩陣上拆下來燒,如果一直重複這樣的動作想必會被搞到瘋掉吧 (一個 ISP 的概念@@)
.
成果 Demo:
有沒有超可愛呀~
生氣也好可愛!!!
也太囧了吧 orz...
Demo 影片:
.
以上的程式碼 & 電路圖可以在這邊下載:
https://drive.google.com/folderview?id=0Bx_TPvI_fqqcfkJYX0tuTk9INDlQdkxQVDBGd19SckRZQlpwYXc5dVhFVWJsRlhPQ2hRdDA&usp=sharing
程式碼的部分要特別注意,為了降低 LED 16x32 矩陣顯示閃爍的情形,所以程式的部分是直接修改 ATmega328 的暫存器來控制 Arduino UNO 的輸出腳位,如此就能有效提升水平掃描的速度,所以程式碼中並不會看到類似 digitalWrite 或是 pinMode 等等的函數,如果想要了解如何直接控制 Atmega328 的輸出腳位可以參考以下網頁:
https://www.arduino.cc/en/Reference/PortManipulation
.
(2015/08/19)
後來發現 LED 32x16 矩陣有一列的 LED 怪怪的(要亮不亮,輸出的燈號看起來髒髒的),測試發現是買回來的 uln2003a 品質有問題,其實這也對整體的輸出影響並不大,所以就勉強繼續使用嚕ww
下一則: [Arduino 筆記] Arduino UNO 自己做 / PL2303HX USB轉TTL 使用心得
限會員,要發表迴響,請先登入