1. 程式人生 > >Arduino Uno 開發簡介

Arduino Uno 開發簡介

Arduino是源於義大利的一套開源硬體開發平臺,Arduino Uno是其推出的最為基礎的開發板。配合外圍器件(感測器,控制開關,LED屏等),任何稍有電子電路基礎的人都可以基於這個平臺快速搭建出具有各種有趣功能的實用電子電路。首先介紹一下Arduino Uno開發板的基本組成。

圖1 ArduinoUno開發板

1.      微處理器:ATmega328,8位微處理器,片內包含32KB Flash(0.5KB由BootLoader使用),2KB SRAM,1KB EEPROM,執行時鐘頻率為16MHz。

2.      USB介面:與電腦連線,用於從電腦中下載程式,同時給Uno單板供電。

3.      外接電源:當Uno脫離電腦獨立執行時,用來給裝置供電,一般使用9V電池供電即可。

4.      電源管腳,地:可輸出5V,3.3V;也可以通過Vin給整個裝置供電。

5.      模擬輸入:6個模擬輸入,提供10-bit的解析度(0-1023)。

6.      數字輸入/輸出:14個數字輸入/輸出管腳,可以由程式自己定義為輸入或者輸出;其中0,1兩個管腳是串列埠複用管腳;3,5,6,9,10,11六個管腳可提供8位(0-255)的PWM輸出;13管腳與板上LED相連,當輸出高電平時,LED點亮。

下面簡要介紹一下Arduino的開發環境。從http://www.arduino.cc/網站上可以免費下載到其開發環境,有Windows/Mac/Linux版本,大家可根據自己的需要選擇。工具安裝執行後介面見圖2。由於是單板和PC相連是通過串列埠轉USB,所以PC上通常需要安裝一下驅動,驅動就在Arduino軟體目錄下的driver目錄,例如:f:\arduino-1.6.4\drivers\。安裝驅動後,可以看到當前的埠,如圖3所示(不同PC埠號一般都不相同,例如此處是COM3)。


圖2. Arduino 開發工具介面

圖3. 當驅動安裝正確,連線PC後,會顯示對應的埠

編輯視窗中有兩個函式,一個是setup,這個函式將在程式執行一開始就呼叫,通常是進行一些管腳的初值設定;而loop就是程式執行的主函式,系統會不斷迴圈呼叫loop,我們將軟體邏輯寫在loop函式中就可以了。

下面再介紹一下軟體常用的函式。

pinMode(pin, mode)  - 定義數字管腳的輸入/輸出,pin可以取0-13,對應14個數字管腳;mode為INPUT/OUTPUT之一,表明該管腳是用於輸入還是輸出

digitalWrite(pin, val) - 設定數字管腳輸出電平,val取值為HIGH/LOW之一

digitalRead(pin)– 讀取數字輸入管腳的電平,函式返回值為HIGH/LOW之一,通常根據返回值為高或者低從而進行不同的處理

analogRead(pin) – 讀取模擬輸入管腳的值,pin取值為A0 – A5;返回0-1023之間的值

analogWrite(pin, val) – 設定數字管腳中的PWM管腳的輸出值,val取值為0-255

Serial.begin(speed) – 初始化串列埠並設定串列埠速率,如Serial.begin(9600); 即將串列埠速率設定為9600bps

Serial.print()/Serial.println() – 串列埠輸出函式

delay(val) – 延時函式,單位為ms,如delay(1000)為延時1s

Arduino的程式設計與C語言很類似,例如行尾以分號結尾,int定義整形變數,if做判斷,for做迴圈等等。例如,下面這段是一個最基本的程式,完成的功能是控制led燈閃爍。

intledPin = 13;   //使用管腳13來控制led(實際是用板子上自帶的led)

voidsetup() {

  // put your setup code here, to run once:

  pinMode(ledPin, OUTPUT);    //設定數字管腳13為輸出管腳

}

voidloop() {

  // put your main code here, to runrepeatedly:

  digitalWrite(ledPin, HIGH);    //輸出高電平,led燈亮

  delay(1000);                            //延時1s

  digitalWrite(ledPin, LOW);    //輸出低電平,led燈滅

  delay(1000);                            //延時1s

}

編輯完程式後,按圖2中選單下面的“√”按鈕即可啟動編譯,若有錯誤會在下面的視窗給出提示;如果正確就可以繼續按後面的“→”按鈕將程式下載到Arduino單板並開始執行。例如上面的程式將控制板上自帶的led以2s的頻率亮滅變化。

另外,為便於對程式設計不瞭解的人使用,還可以安裝Ardublock工具,該工具提供控制元件拖放來實現程式邏輯,後臺自動生成程式碼,不需要手工敲程式碼,例如上面的程式碼段用Ardublock可以表示為圖3的邏輯。不過個人還是覺得,對於稍有程式設計基礎的人來說,還是直接寫程式碼更加方便一些。


圖3 用Ardublock來完成控制led燈閃爍的功能

ArduinoUno是最基本的開發板,對於更加複雜的應用,Arduino還有多種硬體可供選擇。Arduino開發套件配合麵包板及各種元器件,提供了一種快速開發硬體原型的平臺和手段,是當前學習電子製作,進行硬體原型開發的優秀平臺。淘寶上有眾多Arduino開發套件出售,可根據自己的需求酌情選購。

【參考資料】