第一章 認識Arduino
在這個章節,你將可以學到:
- 熟悉Arduino UNO的構造與功能。
- 架設Arduino的開發環境。
第一節 認識Arduino
Arduino Uno開發板
我們之後用來作實習的Arduino開發板,是Arduino眾多型號中,最容易取得的一個,Arduino UNO R3,你可以把它想像成一台小電腦,首先我們來看看他的構造,如圖1-1-1:
圖1-1-1:Arduino UNO開發板_
- MCU: 全名是Microprocessor Control Unit,縮寫為MCU,中文叫作微處理器控制單元,你可以想成這塊板子的大腦,就像電腦的CPU,你所寫的程式碼,由它來運算解讀,並且執行你的需求。我們在之後實習所使用的開發板Arduino UNO R3,採用的MCU是Atmel公司所生產的Atmel 328。
Digital I\/O port: 數位的輸入輸出埠,MCU可藉由這14支腳去讀數位值,或是輸出High\/Low訊號。
Analog input: 類比的輸入,MCU可藉由這6支腳,讀取類比的值並轉成數位值,稱為ADC。
Reset button: 按下去之後,可以重置MCU,你可以想成把電腦重開機。
Power on LED: 電源提示燈,當USB或DC-in的電壓進來之後會亮起。
USB port: USB連接埠,連接板子和電腦的USB接口,除了可以上傳資料到Arudino之外,也可提供+5V的電壓給板子當電源使用。
TX\/RX LED: 當upload code到MCU時,這兩顆LED會同時跟著閃爍,TX燈號是提示Arudino正在傳送資訊給外部元件,RX則是提示Arduino正在接收資料。
DC-in port: 可以外接充電器,但輸入電壓必須在7~12V內。
PWR function port:
$$Vin$$ port: 可外接7~12V給板子電源。
5V port: 提供外部電路電壓。
3.3V port: 提供外部電路電壓。
RESET port: 短路到地的時候會重置MCU。
Arduino IDE
要讓Arduino完成你想達成的功能,除了要把設計好的電路接好,最重要的就是把命令Arduino做的事,以Arduino程式語言來撰寫,經過電腦編譯後,燒錄到Arduino開發板中。
以上的功能,都可以在Arduino IDE中完成,如圖1-1-2。
圖1-1-2:Arduino IDE_
IDE是Integrated Development Environment的縮寫,也就是Arduino的軟體開發環境,你可以在上面寫好程式碼,按下「驗證鍵」,等待Arduino IDE檢查你的程式沒有問題以後,再按下「上傳鍵」,Arduino IDE就會將你的程式碼,透過USB傳輸到你的Arduino開發板上了,如果電路也連接正確,Arduino開發板就會執行你設計的工作囉。
架設Arduino的開發環境
要開始Arduino的開發,必須有個好的開發環境,你要準備的是:
- 一台安裝好Windows\/OSX作業系統的電腦。
- 一個Arduino開發板,在這裡我們使用Arduino UNO作為示範。
- 一條TypeA To TypeB的USB傳輸線。
- Arduino IDE主程式與驅動程式,你可以點選這裡取得。
接下來就要開始架設我們的開發環境了,請按照順序來做。
安裝Arduino驅動程式-以Windows為例
如果你的電腦作業系統是Apple的Mac OS,請直接點選此處,跳過這部分。
- 將Arduino開發板,以USB線連結到你的電腦。系統會跳出正在安裝的畫面,但最後卻安裝失敗,不過不要緊張,請繼續往下做。
- 我的電腦->按滑鼠右鍵->管理->裝置管理員,如圖1-1-3。
圖1-1-3: Windows裝置管理員
- 在裝置管理員,我們會發現有一個「無法辨識的裝置」,如圖1-1-4。因為你的電腦上,還沒有安裝Arduino的驅動程式,所以它無法辨識甚至運作你的Arduino開發板,所以接下來我們要安裝驅動程式。
圖1-1-4: 無法辨識的裝置
- 解開剛剛下載的主程式,以及驅動程式壓縮檔(arduino-1.0.4-windows.zip),解壓縮檔案以後,可以得到一個名稱為arduino-1.0.4的資料夾,如圖1-1-5,裡面包含Arduino IDE的主程式與驅動程式等等檔案。
圖1-1-5: 解壓縮後的資料夾
- 在裝置管理員->無法辨識的裝置旁->按滑鼠右鍵->更新驅動程式軟體,如圖1-1-6。
圖1-1-6: 更新驅動程式
- 選擇「瀏覽電腦上的驅動程式」,如圖1-1-7,把執行路徑指到,您剛剛解壓縮arduino-1.0.4的drivers位置。
圖1-1-7: 更新驅動程式
以我自己使用的電腦為例,因為是在D槽底下解開壓縮檔,故路徑要指定為: D:\arduino-1.0.4\drivers,如圖1-1-8。
圖1-1-8: 指定安裝路徑
在更新驅動程式軟體同時,系統會出現「Windows 無法驗證此驅動程式軟體的發行者 」警告訊息。此時請選擇「仍安裝此驅動程式軟體」,如圖1-1-9。 圖1-1-9: Windows安全性訊息
等候數秒電腦會顯示「Windows已順利更新您的驅動程式軟體」,表示此時Arduino驅動程式已順利完成安裝,如圖1-1-10。
圖1-1-10: 順利安裝驅動程式畫面
如果還不放心,可以在「裝置管理員」確認,如圖1-1-11紅框處。
圖1-1-11: Arduino UNO R3出現在裝置管理員列表
以上就完成了Arduino的驅動程式安裝,注意,這個步驟只有在你第一次將Arduino插上你的電腦時才需要做這個動作,就像你從外面買回來隨身碟,第一次需要安裝驅動程式,讓電腦認識你的新外接裝置。
安裝Arduino驅動程式-以OSX為例
如果你的電腦作業系統是Microsoft Windows,請直接跳過這部分。
OSX本身就內建了 Arduino的驅動程式,所以只需要下載OSX版本的Arudino IDE即完成。
透過以上步驟操作,就可以完成Arduino開發環境的架設,接下來要進行真正的Arduino專題實作!
第二節 Hello! Arduino
接下來,我們希望你可以透過這個專題,學會以下觀念:
- 熟悉Arduino的基本開發流程。
- 學習使用Arduino IDE。
專題資訊
專題目標:透過Arduino開發板,將我們想寫的訊息“Hello Arduino!”輸出至螢幕上。
材料清單:
筆記型電腦一台,並安裝好Arduino IDE
Arduino UNO R3 開發板 x 1
實作步驟與說明
Arduino的應用開發,分成電路實作與Arduino程式實作兩部分,接下來我們針對這兩部分做介紹,請跟著一起練習看看。
電路實作
這次的實習很簡單,我們直接將Arduino UNO開發板透過USB傳輸線連結到你的電腦上的USB port就好,不用再另外連接任何電子元件,如圖1-2-1。
圖1-2-1: 將Arduino以USB線連接至電腦
Arduino程式實作
我們在編輯區,輸入程式碼,如圖1-2-2。
圖1-2-2: Arduino IDE編輯區
要輸入的程式碼內容如下:
完整程式碼
void setup(){
Serial.begin(9600);
}
void loop(){
Serial.println("Hello! Arduino");
delay(1000);
}
接著按下驗證鈕,如果程式碼內容沒有語法的錯誤,Arduino IDE就會顯示以下編譯完成,如圖1-2-3。
圖1-2-3: 編譯完成畫面
驗證成功以後,再按下上傳鈕,看到上傳成功的畫面,如圖1-2-4,就可以來驗收成果囉。
圖1-2-4: 上傳完畢畫面
驗證結果
在工具列選擇「工具」,然後選擇「序列埠監控視窗」,可以看到序列埠監控視窗,如圖1-2-5。
圖1-2-5: 開啟序列埠監控視窗
最後,你可以看到,Arduino每一秒輸出一次「Hello! Arduino」的訊息,如圖1-2-6,表示你成功完成這次的專題!
圖1-2-6、序列埠監控視窗
隨堂作業
試試看輸出的訊息,改成你的名字,例如”Hello! Lawrence”。
試試看將輸出訊息的頻率,改成三秒輸出一次。
第三節 閃爍LED
第一個專題一直跳出文字,看久了好像有點無聊,雖然你以後就會知道這件事的重要性,可以先偷偷Google搜尋debug這個字是什麼意思,我們以後會介紹這個技巧,在這之前,我們來做一些更有意思的專題,讓你更熟悉Arduino的開發流程。
專題資訊
專題目標:了解麵包版的使用,並學習Arduino Pin腳的控制
材料清單:
電腦一台,並安裝好Arduino IDE
Arduino UNO R3 開發板 x 1
麵包板 x 1
任何顏色的LED x 1
220歐姆的電阻 x 1
小知識:Led: (Light-Emitting Diode) 俗稱發光二極體,是一種半導體元件,特點是便宜,耐用,低耗電,與一般燈泡不同的是Led有極性之分(長腳為正極、短腳為負極)如若接反則無法工作。
實作步驟與說明
首先需要將LED的正極(長腳)串聯一顆220ohm的電阻並連接至Pin13,LED的負極(短腳)連接至GND。
小知識:LED可承受的電流大約是20mA(0.02A),而Arduino開發板會提供5V電壓,扣掉LED的正向電壓差,也就是最小可點亮LED的電壓約為2V。
根據歐姆定律(R=V\/I)計算出2V \/ 0.02A = 100 ohm,所以我們選用阻值更大的電阻220ohm,避免LED因為過大電流而燒毀,關於電學的知識,我們會在下一章介紹。
電路實作
佈線圖
Arduino程式實作
完整程式碼
void setup() //setup() 函數只會於電源啟動時執行1次
{
pinMode(13, OUTPUT); //因為使用pin13腳連接led故將之設定為OUTPUT
}
void loop() //loop() 函數會不斷的被重複執行
{
digitalWrite(13, HIGH); //設定PIN13腳位為高電位(開啟LED)
delay(1000); // 設定延遲時間 1秒(發亮 1 秒)
digitalWrite(13, LOW); // 設定PIN13腳位為低電位(關閉LED
delay(1000); // 設定延遲時間 1秒(變暗 1 秒)
}
程式碼說明
本專題目標實作是利用Arduino的Pin 13腳作為輸出連接至LED,讓LED產生閃爍的功能,所以程式設計的概念就是讓Pin 13腳,持續交互切換至高電位或低電位。
第1行void setup()的函數用於初始化設定,此函數內的設定值只會於電源開啟時執行一次,基本上用於設定腳位狀態。
第3行pinMode(13, OUTPUT),是將pin 13 設定為輸出腳位(語法使用請參照語法說明)。
第08行到第11行是程式的主體,被包含在函數void loop()內,在void loop()函數內的程式碼會一直重複執行。
第08行到第11行,是在使LED執行亮一秒滅一秒的動作。
- 08行的digtalWrite(13,HIGH)是使是將PIN 13 寫入HIGH高電位的狀態讓LED發亮,第09行delay(1000)是讓程式停留1000毫秒才進入下一個程式。
- 第10行digitalWrite(13, LOW)則是讓pin 13 輸出低電位讓LED熄滅。
- 第11行依舊是使程式碼停留1000毫秒。
- 當執行完第11行時,程式會回到第8行重新開始執行,如此一來即可完成LED閃爍的效果。
如果不使用delay( )的話,LED明滅的速度會過快,人眼會無法看出閃爍的效果。
程式語法說明
pinMode(pin, mode): 將指定的引腳配置成輸出或輸入。
- pin:要設置模式的引腳
- mode:可設定成INPUT或OUTPUT
delay(ms): 使程序暫定設定的時間(單位毫秒)。
- 參數:ms:暫停的毫秒數
- 一秒等於1000毫秒
digitalWrite(pin, value): 給一個數位引腳寫入HIGH或者LOW。
- pin: 引腳編號(如1,5,10,A0,A3),value: HIGH or LOW
驗證結果
LED將會持續亮一秒,持續暗一秒地交錯,產生閃爍的視覺效果。
隨堂作業
- 讓LED閃爍得更急促。
- 改變使用Pin12控制LED。
- 再加入一個LED,讓這兩個LED交互閃爍。