上文中我們介紹手搖字幕機的硬體組件如何安裝,解釋了視覺暫留的原理、應用與想法、進而導出手搖字幕機的架構,並開始實做硬體,並可完整驅動手搖字幕機的所有的 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 頻道,觀賞其結果。
下一頁還有手搖字幕機校正教學~
請注意!留言要自負法律責任,相關案例層出不窮,請慎重發文!