Arduino POV (視覺暫留) 小玩具 (照舊, 有圖有 Code)

其實呢樣小玩具好多地方都有得賣, 而且亦一d 都唔貴, 只係幾粒 LED 晌高速搖擺時用視覺暫留的視覺效果. 整出來純粹 proof of concept.

下面的 Code 只可以  display  到 A-Z 26 個字母同 Space (空格), 不過如果有需要加o既其實都唔難, 你亦可以焊多幾粒 LED 來顯示中文甚至圖案

整的時候我建議條連接線整長少少, 揮起來比較就手
再唔係就索性連電池連 LED 連 arduino mount 起佢後裝上個電池批/磨機上轉轉轉 (不過要注意安全, 裝得平穩同平衡, 否則會出現飛天 Arduino 現象...)

效果如下, 我係用人手揮的, 所以d 字有d 變型....
DSCF4338.jpg
2009-6-8 00:18

DSCF4344.jpg
2009-6-8 00:22

DSCF4359.jpg
2009-6-8 00:37


好簡單的設計, 五粒LED
DSCF4339.jpg
2009-6-8 00:18


背面, 我懶到連熱膠槍都唔開, 就咁剪一小舊熱膠出來用火機燒一燒痴落去就算
DSCF4340.jpg
2009-6-8 00:18


[ 本帖最後由 dulllou 於 2009-6-8 00:43 編輯 ]

Code 亦都好簡單, 主要係 define 左每個字母點顯示就已經可以
如果有心機o既, 可以輕易 base on 呢個 code, 焊多幾粒 LED 就可以整中文字型玩
不過俾人催緊我訓, 所以就整住咁多先

int _[] = {0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0};
int A[] = {0,1,1,1,1, 1,0,1,0,0, 0,1,1,1,1};
int B[] = {1,1,1,1,1, 1,0,1,0,1, 0,1,0,1,0};
int C[] = {0,1,1,1,0, 1,0,0,0,1, 1,0,0,0,1};
int D[] = {1,1,1,1,1, 1,0,0,0,1, 0,1,1,1,0};
int E[] = {1,1,1,1,1, 1,0,1,0,1, 1,0,1,0,1};
int F[] = {1,1,1,1,1, 1,0,1,0,0, 1,0,1,0,0};
int G[] = {0,1,1,1,0, 1,0,1,0,1, 0,0,1,1,0};
int H[] = {1,1,1,1,1, 0,0,1,0,0, 1,1,1,1,1};
int I[] = {0,0,0,0,1, 1,0,1,1,1, 0,0,0,0,1};
int J[] = {1,0,0,0,0, 1,0,0,0,1, 1,1,1,1,1};
int K[] = {1,1,1,1,1, 0,0,1,0,0, 0,1,0,1,1};
int L[] = {1,1,1,1,1, 0,0,0,0,1, 0,0,0,0,1};
int M[] = {1,1,1,1,1, 0,1,1,0,0, 0,1,1,1,1};
int N[] = {1,1,1,1,1, 1,0,0,0,0, 0,1,1,1,1};
int O[] = {0,1,1,1,0, 1,0,0,0,1, 0,1,1,1,0};
int P[] = {1,1,1,1,1, 1,0,1,0,0, 0,1,0,0,0};
int Q[] = {0,1,1,1,1, 1,0,0,1,1, 0,1,1,1,1};
int R[] = {1,1,1,1,1, 1,0,1,0,0, 0,1,0,1,1};
int S[] = {0,1,0,0,1, 1,0,1,0,1, 1,0,0,1,0};
int T[] = {1,0,0,0,0, 1,1,1,1,1, 1,0,0,0,0};
int U[] = {1,1,1,1,1, 0,0,0,0,1, 1,1,1,1,1};
int V[] = {1,1,1,1,0, 0,0,0,0,1, 1,1,1,1,0};
int W[] = {1,1,1,1,0, 0,0,1,1,0, 1,1,1,1,0};
int X[] = {1,1,0,1,1, 0,0,1,0,0, 1,1,0,1,1};
int Y[] = {1,1,0,0,0, 0,0,1,0,0, 1,1,1,1,1};
int Z[] = {1,0,0,1,1, 1,0,1,0,1, 1,1,0,0,1};
int letterSpace;
int dotTime;
void setup()
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);

letterSpace = 6;

dotTime = 3;
}
void printLetter(int letter[])
{
int y;

for (y=0; y<5; y++)
{
digitalWrite(y+2, letter[y]);
}
delay(dotTime);

for (y=0; y<5; y++)
{
digitalWrite(y+2, letter[y+5]);
}
delay(dotTime);

for (y=0; y<5; y++)
{

}
delay(dotTime);

for (y=0; y<5; y++)
{
digitalWrite(y+2, 0);
}
delay(letterSpace);
}
void loop()
{

printLetter(H);
printLetter(K);
printLetter(E);
printLetter(P);
printLetter(C);
printLetter(_);
}

[ 本帖最後由 dulllou 於 2009-6-8 01:35 編輯 ]

TOP

晌整呢舊野o既時候, 忽然好想要一件 Arduino mini ...咁就可以唔駛有線駁住喇 :P

下星期會試下整件 RGB 同埋 LED 多d 的, 希望可以整到佢出到圖. 不過都要視乎我買唔買到 3mm 的 RGB 同74HC595...而家手上的 8MM 太大了 (所以用了 5mm 的 green)

TOP

提示: 作者被禁止或刪除 內容自動屏蔽

TOP

原帖由 ray08 於 2009-6-8 00:54 發表
我一直都好想知佢咩原理...
而家...等我用BASIC STAMP整下先
真多謝


原理.. 你可以幻想成呢個係一個 5*無限的 dot matrix, 會易明d

TOP

ching~ 如果你move佢慢d
d字會唔會窄埋一齊?

TOP

即係咁, 用個 A 字來做例子
A 字晌 dot matrix 上會 display 成咁樣的
  1  2  3  4
a  ●●
b ●  ●
c ● ● ●  ●
d ●   ●
e ●   ●

你要做o既野只係不停用 LED 閃以下4 組LED bcde (出第1 行) ac(出第2行) ac(出第3行) bcde(出第四行)
當你揮動佢o既時候, 因為視覺暫留o既關系, 你就會見到一個 A 字

TOP

原帖由 Motti_sir 於 2009-6-8 01:02 發表
ching~ 如果你move佢慢d
d字會唔會窄埋一齊?


會. 但同時其實 timing 可以晌個 code 度改, 你加返長個 timing個字就會變返闊

TOP

勁呀!
係咪用8051做架?

TOP

原帖由 風之小文 於 2009-6-8 01:23 發表
勁呀!
係咪用8051做架?


Arduino 咋
我邊會識用 8051 呢D 咁複雜o既野

TOP