校正手搖字幕機啟始位置
我們發現手搖字幕機已經可以正常輸出圖形,但是由於使用者來回擺動手搖字幕機的速度並不一致,而且每次擺幅大小也不一致,所以常常發現向右擺動到底時,圖形未完成顯示,而到右擺洞到底回向左擺時,持續顯示剩於未顯示出的圖形,這樣會造成圖形不正常顯示。
所以作者將手搖字幕機定位問題產生常見問題列舉如下:
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. 台灣、彰化: 渥瑪數位有限公司.
請注意!留言要自負法律責任,相關案例層出不窮,請慎重發文!