專題1 閃爍LED
假設我們都已經將環境設定好了,就可以開始製作第一個令人興奮的專題了。好啦!其實並不會讓人很興奮,不過總是要有個起跑點,這個專題可以協助我們確認所有Arduino開發板週邊的設置是否正確地完成。
我們選擇閃爍程式來進行修改,我們將增加閃爍的頻率,並且將新的程式碼上傳到Arduino開發板中。完成後,開發板上LED的閃爍速率將會大幅提高。接著將更進一步延伸使用外接LED與電阻來取代原先開發板上的內建LED。
所需的元件與裝置
品名 附錄號碼
Arduino Diecimila或Duemilanove開發板或其他複製板 1
D1 5mm紅色LED 23
R1 270Ω 0.5W金屬皮膜電阻 6
實際製作時,任何顏色的LED搭配270Ω的電阻都可以。
不需要尖嘴鉗與斜口鉗以外的工具。
你可依據附錄號碼欄內的數字,在本書後面的附錄中找到相對應的零件,不同的供應商也會提供不同的代碼。
軟體
首先,我們要使用Arduino開發環境來開啟閃爍程式,當你在安裝Arduino開發環境時,範例程式就是閃爍程式。
程式中絕大部分都是註解,它的用途並非程式的主體,而是用來說明程式的工作內容,讓其他人可以知道原作者是在寫什麼。
可以直接在程式的後方加上「//」加入一段話的註解,或是使用「/*」與「*/」將一段註解文字框起來。
如果任意移動程式中的註解,並不會影響程式主要的功能。因為我們加入註解的目的是為了讓另一個人可以了解程式的工作內容,節省許多解讀程式的時間。
在我們開始進入主題之前,有一些名詞上的不同需要告訴各位。在Arduino社群中是以「腳本程式碼(Sketch)」來代替「程式(Program)」。所以從現在起,我一律將Arduino程式稱為「腳本程式碼」。
偶爾我也會提到程式碼(Code),這對於懂得如何編寫程式的人來說是一種較為熟悉的口語說法。所以有些時候你可能會聽到有些人說:「我寫了一個什麼功能的程式。」或是「我寫了一段什麼功能的程式碼。」其實都是一樣的道理。
回到主題,為了要修改LED閃爍的速率,我們需要針對延遲(delay)功能中的數值進行修改。在草稿中共有兩個delay要修改:
delay(1000);
將括號內的數值改成200,就會變成下面這樣:
delay(200);
這樣會使得LED亮起與熄滅間的間隔時間,從1000毫秒(1秒)變成200毫秒(1/5秒)。在第三章〈LED專題〉中將會更深入修改這個腳本程式碼,不過現在我們只要修改delay功能並重新上傳到Arduino開發板中即可。
將開發板與電腦相連,並選擇「Upload」把腳本程式碼上傳到板子裡。假如所有東西都就定位,板子上的兩顆紅色LED會稍微停頓5~10秒,接著便會開始猛烈地閃爍。
如果什麼事情都沒發生,就必須重新檢查一下序列埠號碼與開發板型號。
當完整的腳本程式碼上傳完畢後,開發板便會自動重置,一旦全部正常,你則會看到數位腳位13旁的LED閃得比先前快得多。
硬體
目前為止似乎還沒有接觸到實際的電子元件,這是因為目前所用的硬體都可以在開發板上找到。在這節中,我們將連接額外的LED到開發板上。
LED這類的元件不能直接接上電源使用,必須要搭配一顆限流電阻才行。在許多電子供應商都可找到這兩種元件,詳細的供應商以及相對應的料號,請見本書的附錄。
設計者將Arduino開發板上方的插槽設計成可以直接插上擴充板的形式。然而,為了方便進行電子實驗,也可將跳線或元件接腳直接插入插槽。
如何連接此專題中的外接LED,可參考此專題的電路圖。
這種類型的電路圖皆使用特殊符號來代表電子元件,好比LED的符號旁就多了兩個箭頭,代表為發光二極體,工作模式與二極體相同,只允許電流由一個方向流過,在旁邊加上小箭頭的話,則代表會發出亮光。
電阻的符號則是以長方形或是鋸齒線為代表,而電路圖中的直線則代表元件間須連接。連接方式有可能是一段電線或是麵包板上的同一塊導通區,在這裡我們只是直接將元件接在一起。
我們可以直接將元件接到Arduino開發板的數位腳位12與接地腳位上,但首先我們必須將LED的其中一隻針腳接上電阻。
電阻不論哪隻針腳都可以接到LED上,但是LED就必須要以正確的方式連接才行。LED的針腳分別為一長一短,而長的針腳則必須要接到數位腳位12上,短的則必須與電阻相連接。也有許多元件跟LED一樣,特別把正腳位做得比負腳位長一點。
你可以稍微將LED的兩隻針腳分開,並將電阻以纏繞的方式接到短針腳上。
接著,將LED較長的針腳接到數位腳位12上,然後再將電阻的另一隻針腳接到接地腳位中。有時也可將針腳的末端稍微折彎,讓它能更好插入插孔中。
現在我們可以開始修改原本的LED腳本程式碼了,我們只需要將原先的數位腳位13改成數位腳位12即可,欲修改的腳本程式碼區塊如下所示:
int ledPin = 13;
// LED connected to digital pin 13
改完後則為:
int ledPin = 12;
// LED connected to digital pin 12
改好之後,就可以按下Upload鈕將腳本程式碼上傳到開發板中,這種做法就跟按下IO板上的按鈕來更換頻率的方式相同。