2012年6月7日星期四

Arduino入門教學


購買到Arduino
    購買一片Arduino硬體現在已經相當便利,在台灣除了有許多賣家或代理商可以很快就買到手,你也可以連到美國的(http://www.sparkfun.com)網站上面購買最新版本的Arduino。而Arduino的售價大概需要USD$31.95美元,再加上國際運費的話,其實單買一塊板子會是相當地昂貴,但其實跟BasicStamp這種需要4千多台幣的互動I/O板子來比,算是相當划算的。而對於有些對單晶片具有相當知識的使用者來說,其實Arduino的電路圖設計是已經公開在網路上面供人下載的,如果你具有這方面的知識與製作能力,可以自己依照電路設計來製作出自己的Arduino板子。
而其他不會製作Arduino版子的使用者而言,沒關係,在"Arduino硬體教學"之中,會教導你如何利用最低廉的價格製作出具有同樣功能的Arduino,這種方式也可以在之後將你的藝術作品或是互動遊戲獨立製作成一個運作處理。如果你已經透過這個網站購買了Arduino版子,或是已經完成了Arduino的複製版本,接下來就可以準備所需的工具與軟體來玩樂了。
準備所需的線材
所需的設備如下:
  • arduino板子
         
  • USB 2.0 (梯形方頭)
  • 麵包板
  • 單心線
  • 可變電阻(1K歐姆)
    ....等其他電子零件           (其他建議的零件清單)
下載軟體
    軟體下載(官方網站下載 www.arduino.cc/en/Main/Software)
    最新版本 Arduino 0022
    支援平台:
  • Mac OS X (>= 10.3.9): PowerPC核心, Intel核心
  • Windows平台
  • Linux平台
安裝
  • 1.將Arduino接上方頭的USB線,另外一端連接電腦
  • 2.接上之後會出現FTDI的驅動程式安裝畫面
  • 3.指定驅動程式安裝目錄,一般抓下來的arduino資料夾裡面就會包含(EX:C:arduino-0007driversFTDI USB Drivers)。




  • 4.安裝Arduino,安裝方式只需解壓縮就可以使用,一般建議放在C:底下,建立叫arduino的資料夾。執行時候只需點選arduino.exerun.bat
  • 5.連接好硬體之後,可以先檢查一下你的Arduino是在哪個COM port。你可以打開(我的電腦->控制台->系統->切換到"硬體"標籤->點選"裝置管理員"->展開連接埠(Com和LPT)->查看USB Serial Port(COM4),括號裡面的數字就是你連接的Arduino Port)。
測試你的Arduino
    在剛入手的Arduino上面會有一顆測試的LED燈,它位在數位輸入輸出第13PIN腳的下方,如果剛買到的Arduino,裡面已經會寫入基本的LED閃爍範例,你就可以依據那顆測試LED燈號來判斷Arduino是否正常運作。如果沒有閃爍的話,有幾種可能性:

  • 1.單晶片燒壞,這種情況相當的低,一般可能是USB沒接好,或是剛接上的Arduino從接上之後必須要等待3~5分鍾的初始化動作。
  • 2.Arduino上的Atmega8-16PI單晶片沒有燒入Bootload,這種情況可能是原廠沒有幫忙燒入內建的韌體程式,出現這種狀況沒有關係,我們可以自己製作燒入的接頭就可以解決了,相關的方法在硬體篇內會有詳細的介紹。
開始來寫程式吧!!
  
  學習Arduino的語法相當簡單,它的語法結構與Processing,Java,C語言相當類似,你只需要基礎的程式設計能力就可以快速上手。基本Arduino的語法function必須包含兩個部份:void Setup() 和 void Loop()
  • Steup()的內容主要是設定一啟動Arduino時候所要初始化的設定參數。
  • Loop()的內容是負責控制單晶片在運作時候重複執行的每一項工作項目,也就是所撰寫的程式內容。比較詳細的語法介紹會在『Arduino語法』中簡介,這裡簡單的以基本的LED燈閃爍控制來做範例解說。
LED閃爍語法:(轉載原官方網站上的程式碼,網址如下:www.arduino.cc/en/Tutorial/BlinkingLED)

/* Blinking LED
* ------------
*
* turns on and off a light emitting diode(LED) connected to a digital
* pin, in intervals of 2 seconds. Ideally we use pin 13 on the Arduino
* board because it has a resistor attached to it, needing only an LED
*
* Created 1 June 2005
* copyleft 2005 DojoDave <http://www.0j0.org>
* http://arduino.berlios.de
*
* based on an orginal by H. Barragan for the Wiring i/o board
*/
int ledPin = 13;             // 這裡設定所要閃爍的LED燈腳位
void setup()
{
pinMode(ledPin, OUTPUT);     // 這裡設定所要輸出的PIN腳模式,OUTPUT = 輸出4V電壓
}
void loop()
{
digitalWrite(ledPin, HIGH);  // 設定PIN13腳位為高電位 = 4V
delay(1000);                 // 設定延遲時間,1000 = 1秒
digitalWrite(ledPin, LOW);   // 設定PIN13腳位為低電位 = 0V
delay(1000);                 // 設定延遲時間
}
由以上的範例可以製作出讓PIN13的腳位輸出一個每隔1秒鍾就產生高電位的閃爍效果。
而將寫好的程式碼撰寫在你的Arduino介面裡面之後,接下來要先按下Verify 這個按鈕,程式會先幫忙你檢查語法是否錯誤,如果沒有錯誤,會出現(Done Compiling)
再來選擇你目前的COM設定,如果這一步沒有確認設定好的話,會是出現錯誤訊息的。在軟體工具上面找到Tools->Serial Port->COM4(這裡的COM Port依照你所裝上去的USB Serial Port),確認之後打勾就可以了。
    接下來就是將程式給上傳到Arduino上面,先在Arduino硬體上面按下Reset按鈕一下,等待Pin13的LED燈閃爍一秒之後。(新版本的Arduino已經不需按下Reset)

Note
不是等PIN13LED又開始閃爍之後喔,是要在按下Reset時,會看到Pin13LED閃爍一秒(很快地閃),然後會熄滅,這時候就要按按鈕了,否則5秒後,Arduino就會開始執行原來晶片裡面所要執行的動作了

再按下軟體上面的Upload to I/O Board ,等待幾秒鍾,板子上面的RX/TX燈號會連續閃爍,等閃爍之後,軟體上面的下面會出現:
Atmel AVR ATmega8 is found.
Uploading: flash
Firmware Version: 1.18
Firmware Version: 1.18
這些訊息表示有找到晶片,並且已經上傳上去Arduino,你可以看看LED13燈號是否會每隔一秒鍾閃滅閃滅,如果是的話,就完成你的第一次使用Arduino了。
這裡再整理一下每次使用Arduino軟體的程序:
如果以上的程序還是會有問題,可能是COM PORT沒設好,或是正在有軟體再佔用COM PORT...等情況。
進階應用
  如果上面簡單的範例可以使用,接下來可以來試看看利用可變電阻取得數值。
連接可變電阻的電路方式如下圖:
連接好電路之後,就可以開始來寫程式了,程式碼如下:
int potPin = 0;                // 宣告類比腳位輸入的PIN腳
int val = 0;                   // 宣告變數Val = 0
void setup() {
  Serial.begin(9600);          //設定SerialPort的速度9600 = 9600bit/s
}
void loop() {
 val = analogRead(potPin);     // 用analogRead()這個函式讀取特定腳位的數值到變數val
  Serial.print(val);           //印出數值在Serial.Monitor
  delay(150);                  //延遲讀入的時間為150ms
}
將程式上傳到Arduino之後,打開Serial Monitor ,就會看到從可變電阻上面所收到的數值,而這些數值就可以用來控制LED的閃滅,或是控制Flash的動畫影格之類的應用。


Before You Copy: http://arduino.tw/whatsarduino/novice.html#ixzz1x4ZiDjZH
Arduino.TW
Under Creative Commons License: Attribution Non-Commercial Share Alike

没有评论:

发表评论