2009年4月20日 星期一

邁向互動達人的第一堂課. Digital Out

什麼是電路?


電路就像如同我們身體的循環一樣,是一個封閉的系統


一個電路可視為一個迴圈,若要停止,則只要將電路形成斷路即可。


任何的LED線路都是由此延伸的:電源、LED、電流限制元件(此為電阻)。
給更大的電阻,讓經過LED的電流變小,則亮度也會減小;反之,電阻較小,則亮度變大。
同樣的道理,給的電越大,LED也會越亮(前提是不燒掉)。


Digital Out

接下來,我們來讓Arduino「動起來」!
#ex1. Blink

程式檔:Arduino Software的File > Sketchbooks > Example > Digital > Blink

語法~
pinMode(pin, Mode)
digitalWrite(pin, value)
delay(ms)
永遠記得在使用digital pin時,要記得宣告pinMode,是編輯時常常犯錯的地方


#數位是啥?

>只有HIGH跟LOW (0/1, On/Off)
所以ex1.的程式,就是很單純的作pin腳給電/不給電的動作,來控制LED的亮暗。


#ex2. Loop
讓我們再多複製幾組ex1.的線路,加到6組吧!
製作「霹靂遊俠李麥克」的伙計燈

程式檔:Arduino Software的File > Sketchbooks > Example > Digital > Loop


#ex3. Light Talk
讓我們玩點比較好玩的吧,延伸控制每個pin腳的概念

Light Talk是一個透過手搖動單排的LED,透過了「視覺暫留」(Resistance of Vision)的原理,來顯示圖案或文字。所謂的「視覺暫留」是一種生理現象,乃是指在眼前景物快速消失的瞬間,視覺卻仍保留該物體的形像。一般來說,視覺暫留的最大應用就是電影與電視節目,而 Lightalk 亦如是。

跟ex2.一樣的線路,所以不用再另外接,但請把線路接牢一點!

程式檔:Light_Talk.pde

int timer = 100; // The higher the number, the slower the timing.

int pins[] = { 2, 3, 4, 5, 6, 7 }; // an array of pin numbers

int pattens = 10; // how many pattens

int lights = 6; // how many LED light

byte graphy[10][6] = { {0,1,1,1,0,0},

{1,1,1,1,0,0},

{1,1,1,1,1,0},

{0,1,1,1,1,0},

{0,0,1,1,1,1},

{0,0,1,1,1,1},

{0,1,1,1,1,0},

{1,1,1,1,1,0},

{1,1,1,1,0,0},

{0,1,1,1,0,0} }; //patten array




void setup()

{

for (int i = 0; i < lights; i++) // the array elements are numbered from 0 to num_pins - 1 pinMode(pins[i], OUTPUT); // set each pin as an output } void loop() { for(int k = 0; k < lights; k++) { //for breakspace digitalWrite(pins[k], LOW); } delay(40); for (int i = 0; i < pattens; i++) { // loop through each pin... for(int j = 0; j < lights; j++) { if(graphy[i][j]==1) { digitalWrite(pins[j], HIGH); // turning it on, }else { digitalWrite(pins[j], LOW); // turning it off. } } delay(1); // pausing, } for(int k = 0; k < lights; k++) { //for breakspace digitalWrite(pins[k], LOW); } delay(40); }




程式上傳好後,就隨自己看的清楚的速度快速左右晃動,就可以看見可愛的愛心


程式中 patten[10][6] = { .. } 中,每六個唯一列,共10行,所繪製的圖形為:

所以當然也可以自己做喜歡的圖案,例如:

這裡附贈一個空白的,可以自己填



這堂課所教的延伸應用: 互動燈具

(可隨音樂舞動的變色燈,這個之後我們會教一點)


(類似上面的東西,可變化模式的)


(Tengu)


(3D LED矩陣Cube)

沒有留言: