2014年4月10日 星期四

【S4A小專案】矩陣LED小動畫(需用修改後韌體)

一個嘗試把arduino與S4A導入國小資訊課程的探索紀錄

【生活中的科技】

行人在過紅綠燈時,常常可以看到一個小綠人走路的燈號,提醒行人可以穿越馬路



這樣的顯示裝置是如何做出來的呢?用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來作動畫了。

以下是試算表中的愛心動畫設計圖


以下為小綠(紅?)人,走路的設計(畫了很久,我承認畫圖是我的罩門)


以下是小紅人的圖片


最後實作的過程不再詳細說明,附上範例檔案(下載連結)






2 則留言:

  1. 我按執行了程式也對,就是沒顯示

    回覆刪除
  2. 我的方法很老舊,建議使用這個https://sites.google.com/site/wenyutransformer/02jin-jie-pian/05led8x8xian-shi-qi

    回覆刪除