【生活中的科技】
行人在過紅綠燈時,常常可以看到一個小綠人走路的燈號,提醒行人可以穿越馬路
這樣的顯示裝置是如何做出來的呢?用S4A要如何做呢?
【影片】
先來看一下實際運作的影片
【使用硬體】
Arduino UNO r3、8X8矩陣LED的模組(含MAX7219驅動IC)
【安裝修改的S4A韌體及S4A介面image】
在此僅說明安裝方式,詳細深入的修改韌體方法與說明,請參考另一篇
【S4A韌體】修改S4A控制矩陣LED原理說明
由於此模組以SPI介面傳輸,無法使用原有的S4A來控制,需安裝修改過的
S4A韌體(下載連結),及修改的S4A介面image(下載連結)。
修改的S4A韌體名稱為S4AFirmware15ledMatrix8X8,安裝方式與原S4A韌體
相同,需在ArduinoIDE中開啟,編譯並上傳至Arduino板子上。
修改的S4A介面image名稱為S4A_8X8_LED_Matrix.image,需複製到S4A的目錄裡(路徑可由S4A捷徑,按右鍵中看到)
建議不要刪掉原有的S4A.image(以利恢復原來的S4A),當S4A的目錄有兩個image時,啟動S4A會要求兩者選一。
在本例中要選S4A_8X8_LED_Matrix.image
【Arduino接線】
矩陣LED模組接線依SPI介面要求,請參考下圖
(模組另一側的針腳是為串聯多個矩陣LED,在本例中不使用)
【S4A控制積木】
由於使用修改S4A介面的image,所以有個新的積木ledMatrix可使用,ledMatrix積木的號碼可用4~11,分別代表矩陣LED中的第一橫排至第八橫排(做一次測試即可知哪一邊為上方),如下圖:
ledMatrix的設定值可為0~255,以4號ledMatrix積木為例(第一橫排)為例,下面三個圖為值分別設為1、3、255的情形。能看到傳送值與其2進位值的關係嗎?
設定值是以二進位的值來控制一排的LED(雖然本例中與二進位表示法剛好左右相反)。同樣的方法,如果要控制第二排就要用5號ledMatrix積木,其他排以此類推。這樣就可以對8X8矩陣LED做完全的控制。
【點陣圖工具】
想要在矩陣LED上畫圖,就必需要計算每一排的二進位值。本文中教學的對象是小學生,使用二進位會對一般學生產生困難,那…有什麼好方法嗎?
我們可以使用試算表的公式來幫我們解決計算的問題。並且將計算的值存入S4A的列表中,準備讓程式畫出。下面以畫出愛心的圖案步驟為例。
首先在試算表中填入愛心的值,讓它自動算出每一排的數值
再將數值輸入(或匯入)到S4A的列表中
第三步是準備好控制積木
最後讓積木執行後,就完成在矩陣LED上畫圖了
【S4A程式範例】
畫出一個畫面後,能不能畫出多個畫面連續播放呢?
只要運用多個列表,就能用S4A來控制矩陣LED來作動畫了。
以下是試算表中的愛心動畫設計圖
以下為小綠(紅?)人,走路的設計(畫了很久,我承認畫圖是我的罩門)
以下是小紅人的圖片
最後實作的過程不再詳細說明,附上範例檔案(下載連結)
我按執行了程式也對,就是沒顯示
回覆刪除我的方法很老舊,建議使用這個https://sites.google.com/site/wenyutransformer/02jin-jie-pian/05led8x8xian-shi-qi
回覆刪除