顯示技術:視覺暫留的應用- 手搖字幕機開發軟體篇

顯示技術:視覺暫留的應用- 手搖字幕機開發軟體篇
本篇是接續上篇文章『顯示技術:視覺暫留的應用- 手搖字幕機開發硬體篇』(曹永忠, 2016),針對人類眼睛的特性:視覺暫留( Persistence of Vision :POV)來創造出LED點陣式顯示螢幕的效果,進而開發手搖字幕機。

上文中我們介紹手搖字幕機的硬體組件如何安裝,解釋了視覺暫留的原理、應用與想法、進而導出手搖字幕機的架構,並開始實做硬體,並可完整驅動手搖字幕機的所有的 LED 燈泡(曹永忠, 2016; 曹永忠, 許智誠, & 蔡英德, 2014b, 2014c)。

本文即將告訴讀者如何開發軟體,讓既有的硬體可以產生出字幕機的效果。

手搖字幕機實驗

我們繼續將 Led 發光二極體發光陣列模組應用手搖字幕機的開發,參考上篇文章『顯示技術:視覺暫留的應用- 手搖字幕機開發硬體篇』(曹永忠, 2016) 進行電路連接,連接到 Arduino 開發板,讀者再依照下表之手搖字幕機測試程式二進行程式攥寫的動作。

完成程式後,編譯上傳到 Arduino 開發板後,可以見到執行過程的動畫,也可以到作者的 Youtube 頻道,觀賞其結果。

 

表 1 手搖字幕機測試程式二

手搖字幕機測試程式二(emled02)

#define LEDPIN 7    

const int ledcount = 7;

int ledPin[] = { 22, 24, 26, 28, 30, 32, 34, 36, 38, 40 , 42, 44, 46,48,50,52 };

byte bitmap[] = {

0b00000000,

0b01000001,

0b01111111,

0b01000001,

0b00000000,

0b00000000,

0b00001110,

0b00011111,

0b00111111,

0b01111110,

0b00111111,

0b00011111,

0b00001110,

0b00000000,

0b00000000,

0b00111111,

0b01000000,

0b01000000,

0b00111111,

0b10000000  

};

 

unsigned char pos = 0;

unsigned char i = 0;

 

 

void setup() {

  Serial.begin(9600);

 

for(int pin = 0; pin < ledcount + 7; pin++) {

  pinMode(ledPin[pin], OUTPUT);

}

 

void loop() {

if(digitalRead(SWPIN) == HIGH) { 

    Serial.print("Turn Right  \n ") ;

 

      delay(10); 

      pos = 0;

 

      while(bitmap[++pos] != 0b10000000) {

        for(i = 0; i < 7; i++)

        { 

               digitalWrite(ledPin[i], (bitmap[pos] >> i) & 0b00000001);

        }

        delay(5);

      }

 

      for(i = 0; i < ledcount; i++) { 

        digitalWrite(ledPin[i], LOW);

      }

}

資料下載:
https://github.com/brucetsao/techbang/tree/master/201604/emled02

 

 

可以到作者的 Youtube 頻道,觀賞其結果。

下一頁還有手搖字幕機校正教學~

 

曹永忠
作者

曹永忠,國立中央大學資訊管理學系博士,目前在暨南大學電機工程學系兼任助理教授與自由作家,專注於軟體工程、軟體開發與設計、物件導向程式設計......並持續發表作相關專業著作。

使用 Facebook 留言
發表回應
謹慎發言,尊重彼此。按此展開留言規則