LED跑馬燈顧名思義就是由LED元件組成的陣列按照設定的順序動作點亮,這裡要探討的是其中幾種動作的作法

 


控制面板:


由LED元件陣列和1個停止開關組成

20080910-06  

 

 

1.第一種動作是單一方向的跑馬燈,較簡單的作法是用已設定動作的陣列,搭配移位暫存器(Shift Register)和陣列旋轉元件(Rotate 1D Array)來達成。要朝反方向動作則在輸出陣列前面在加上陣列反向元件(Reverse 1D Array)


其他還有用陣列取代元件(Replace Array Subset)...等搭配移位暫存器,或是完全不用移位暫存器的作法,因設定上較複雜不使用

20080910-01  

 

 

2.第2種動作是往復動作的跑馬鐙,這裡用了3層迴圈,其實只要適當用移位暫存器可以只用1個迴圈,當然程式的複雜度會增加


為了容易了解動作裡面的雙迴圈是用For Loop,用While Loop也可以,不過迴圈停止的條件對初學者不太好處理。而用For Loop的缺點是按Stop後無法馬上停止,有需要立刻停止的話還是用While Loop來做


雙層For Loop的外圈主要是方向切換的信號處發,內圈才是實際動作的部份。這裡動作部份是不用移位暫存器的方法,直接使用陣列取代元件(Replace Array Subset)來製作

20080910-02  

 

 

以上提到的是單純動作的跑馬燈,遇到較動作複雜的要怎麼做?許多人常用的就是第3種俗稱查表法的方式來製作


首先當然就是把需要的動作做成陣列列表,動作列表習慣上有3種:


第1種是用LED元件做成2D陣列,按照動作逐列設定LED的狀態,好處是所見及所得,編輯上不容易出錯


第2種是用0和1的數字做成2D陣列,按照動作逐列設定LED的狀態,因為全都是數字在編輯過程中很容易看錯,用的人可能不多


第3種是用數字做成1D陣列,數字呢是把LED的動作用2進制的方式編譯而成,這個方法可稱之為高手專用,完全就是要讓人無法看到就能猜出LED的動作

 

 

下圖動作列表是數字做成1D陣列和LED元件做成2D陣列,2個列表的動作完全相同

20080910-03  

 

 

LED元件做成2D陣列的動作拆解程式

20080910-04  

 

 

數字做成1D陣列的動作拆解程式

20080910-05  

,

未出師的小工程師 發表在 痞客邦 PIXNET 留言(0) 人氣()