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

校正手搖字幕機啟始位置

我們發現手搖字幕機已經可以正常輸出圖形,但是由於使用者來回擺動手搖字幕機的速度並不一致,而且每次擺幅大小也不一致,所以常常發現向右擺動到底時,圖形未完成顯示,而到右擺洞到底回向左擺時,持續顯示剩於未顯示出的圖形,這樣會造成圖形不正常顯示。

 

所以作者將手搖字幕機定位問題產生常見問題列舉如下:

1. 圖形重疊:由於使用者來回擺動手搖字幕機的速度並不一致,而且每次擺幅大小也不一致,所以常常發現向右擺動到底時,圖形未完成顯示,而到右擺洞到底回向左擺時,持續顯示剩於未顯示出的圖形,這樣會造成圖形不正常顯示,產生剩於圖形重疊回到原有圖形。

2. 圖形位移:由於開始擺動與程示顯示圖形不一致,擺動開始時,程式未正確開始顯示,等到擺動到一段時間時,其位置已經不是開始位置;或許一半,三分之一或其它等位置才開始顯示圖形,造成圖形位移。

3. 圖形開始不完整:由於開始擺動與程示顯示圖形不一致,擺動開始時,程式未正確開始顯示或是顯示非開始圖形,這乃是程式顯示起點與擺動起點不一致,其擺動開始時,程式已經執行一段時間時,到擺動開始位置繼續顯示圖形,造成開始圖形為部份圖形。

4. 無圖形顯示:由於程式顯示會有休息,而使用者擺動擺幅太小,至使這段擺幅乃處於程式顯示休息的狀態,產生圖形未顯示出來。

基於上述理由,我們必須將擺動啟始與程式顯示時點同步,我們參考上篇文章『顯示技術:視覺暫留的應用- 手搖字幕機開發硬體篇』(曹永忠, 2016)的表一進行電路連接,加入水銀開關到 Arduino 開發板的 pin 2,讀者再依照下表之手搖字幕機測試程式三進行程式攥寫的動作。

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

 

表 2 手搖字幕機測試程式三

手搖字幕機測試程式三(emled11)

 

#define LEDPIN 7    

#define SWPIN 2 

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);

}

pinMode(SWPIN, INPUT);     

//digitalWrite(SWPIN, HIGH); 

}

 

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/emled11

 

本文要延續上篇:顯示技術:視覺暫留的應用- 手搖字幕機開發硬體篇 (曹永忠, 2016)手搖字幕機硬體組立,進而告訴各位讀者,如何開發手搖字幕機的軟體,讓手搖字幕機可以顯示出圖形。


透過本文的解說,相信讀者對於視覺化軟體開發,有更深的了解。本文為『視覺暫留的應用- 手搖字幕機開發軟體篇』,後續筆者還會繼續發表『手搖字幕機商業功能軟體開發篇』,來完成整個手搖字幕機開發,讓我們在未來可以透過視覺化的應用 (曹永忠, 许智诚, & 蔡英德, 2014a, 2014b; 曹永忠, 許智誠, & 蔡英德, 2014a; 曹永忠, 許智誠, et al., 2014b, 2014c; 曹永忠, 許智誠, & 蔡英德, 2014d),創造出更有趣、更創新的產品。敬請期待更多的文章。

 

筆者介紹:

曹永忠 (Yung-Chung Tsao):目前為自由作家,專注於軟體工程、軟體開發與設計、物件導向程式設計、Arduino 開發、嵌入式系統開發,商品攝影及人像攝影。長期投入資訊系統設計與開發、企業應用系統開發、軟體工程、新產品開發管理、商品及人像攝影等領域,並持續發表作品及相關專業著作。
Email:prgbruce@gmail.com 
Line ID:dr.brucetsao   
Arduino部落格:http://taiwanarduino.blogspot.tw/
臉書社群(Arduino.Taiwan):https://www.facebook.com/groups/Arduino.Taiwan/
活動官網:http://arduino.kktix.cc/
Youtube:https://www.youtube.com/channel/UCcYG2yY_u0m1aotcA4hrRgQ

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

參考文獻:

曹永忠. (2016). 顯示技術:視覺暫留的應用- 手搖字幕機開發硬體篇. 顯示技術.  Retrieved from http://www.techbang.com/posts/41880

曹永忠, 许智诚, & 蔡英德. (2014a). Arduino 互动字幕机设计: Using Arduino to Control a Color Led Display with An Android Apps. 台湾、彰化: 渥瑪數位有限公司.

曹永忠, 许智诚, & 蔡英德. (2014b). Arduino 光立体魔术方块开发: Using Arduino to Develop a 4* 4 Led Cube based on Persistence of Vision. 台湾、彰化: 渥瑪數位有限公司.

曹永忠, 許智誠, & 蔡英德. (2014a). Arduino 互動字幕機設計: The Interaction Design of a Led Display by Arduino Technology (初版 ed.). 台灣、彰化: 渥瑪數位有限公司.

曹永忠, 許智誠, & 蔡英德. (2014b). Arduino 手搖字幕機開發:The Development of a Magic-led-display based on Persistence of Vision (初版 ed.). 台灣、彰化: 渥瑪數位有限公司.

曹永忠, 許智誠, & 蔡英德. (2014c). Arduino 手摇字幕机开发: Using Arduino to Develop a Led Display of Persistence of Vision. 台湾、彰化: 渥瑪數位有限公司.

曹永忠, 許智誠, & 蔡英德. (2014d). Arduino 旋轉字幕機開發: The Development of a Propeller-led-display based on Persistence of Vision. 台灣、彰化: 渥瑪數位有限公司.

曹永忠
作者

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

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