1. 程式人生 > >手把手教你智慧硬體開發(二) 從HelloWorld開始

手把手教你智慧硬體開發(二) 從HelloWorld開始

第2節 Hello World

萬事開頭難,這一節我們將寫一個最簡單的程式,讓它在Arduino MEGA開發板上執行起來。

為此,我們需要準備,

  1. Arduino MEGA開發板;
  2. 一臺開發用的電腦,Window、Linux、MacOS作業系統都可以;
  3. 一根連線Arduino MEGA開發板和電腦的USB資料線;
    注意,這根USB連線線的一端是方頭的,它將和Arduino開發板提供的USB介面相連。這種方頭的USB資料線介面叫做USB type-B,常用在印表機的介面上;而我們最常使用的那種USB資料線介面叫做USB type-A。

2.1 搭建開發環境

在官網下載相應作業系統的

Arduino整合開發環境(簡稱Arduino IDE)。有了這個IDE工具,就能方便的編輯、編譯程式碼,並把編譯的結果通過USB連線線,部署到Arduino開發板上。

IDE下載完成後,就像任何普通程式一樣,直接安裝就行了。

雙擊Arduino的圖示,IDE程式就執行起來了,

2.2 新建工程

啟動Arduino IDE,點選選單欄的檔案->新建(或者使用快捷鍵Ctrl+N),生成新的工程檔案,

點選選單欄的檔案->儲存(或者使用快捷鍵Ctrl+S),儲存生成的工程檔案。

檔名填寫HelloWorld。儲存後,Arduino IDE會自動生成一個名稱叫HelloWorld

的資料夾,並在這個資料夾下生成一個同名的HelloWorld.ino檔案。

.ino檔案是Arduino工程的主檔案,Arduino IDE要求工程專案的主檔案必須置於同名資料夾之內

2.3 Hello World

接下來,我們來實現一個簡單的功能:Arduino開發板通過串列埠,不斷的向電腦端輸出Hello World;同時,我們通過串列埠工具,看到Arduino開發板的輸出資訊。

2.3.1 原理介紹

Arduino開發板都會提供一個串列埠(如果你不知道什麼是串列埠的話,可以把它想象成一條連線著開發板和其他外圍裝置的管道)供電腦除錯Arduino開發板上執行的程式使用。

Arduino程式通過Serial.print()這樣的函式就能把資料從開發板寫入到串列埠中,如果電腦端有對應的接收程式,那麼就能看到寫入的資料。

Arduino IDE通過串列埠和PC(或其他裝置)通訊。
在Arduino IDE中Serial物件就是串列埠的化身。
注意,Serial是系統的類物件例項,而不是類,所以直接使用Serial.print()這種方法。

詳細內容可以參看官網的描述

  1. UNO的串列埠硬體位置

    USB介面和0、1引腳都對應串列埠-Serial

  2. MEGA的串列埠硬體位置

    MEGA有多個串列埠,
    USB介面和0、1引腳對應串列埠-Serial
    18、19引腳對應串列埠1-Serial1
    16、17引腳對應串列埠2-Serial2
    14、15引腳對應串列埠3-Serial3

2.3.2 程式碼設計

新生成的HelloWorld.ino檔案中,自動生成了setup()loop()兩個函式。

void setup() {
  // put your setup code here, to run once:
}

void loop() {
  // put your main code here, to run repeatedly:
}

開發板的程式啟動時,首先會呼叫setup(),進行初始化工作;
然後會迴圈的呼叫loop()函式,讓開發板不停的運轉起來。

程式的整個邏輯就像下面的c語言程式碼,

void setup(void);
void loop(void);

int main(void) {
    setup();

    while(1) {
        loop();
    }

    return 0;
}

這裡面的main和while程式碼去哪了呢?它們被Arduino的開發環境隱藏了起來,只是將setup()loop()開放給了開發者。

開發者只需要實現這兩個函式就行了。這樣設計的目的是讓程式的結構更清晰。從這裡可以看出,

  1. setup()只執行一次,用來完成初始化的功能;
  2. loop()不斷的被迴圈執行,是實現開發板邏輯控制的地方;

在本例中,setup()函式裡只需要設定串列埠波特率。

波特率指的是資料傳送的速度,只有接收方和傳送方都在同一個波特率上,才能正確的接收資料。這就好比調頻的電臺和收音機,兩者的頻率必須一致才能接收到聲音。

void setup() {

  // put your setup code here, to run once:
  Serial.begin(9600);
}

loop()中,用串列埠輸出”Hello world!”,每迴圈一次,就會輸出一次這個字串,

void loop() {
  // put your main code here, to run repeatedly:
  Serial.println("Hello world!");
}

2.3.3 程式部署

程式寫好以後,需要將電腦上編譯好的程式,部署到開發板上,讓程式執行起來,

  1. 用USB資料線,將開發板和電腦連線起來;現在的新版作業系統(Window10, MacOS X等等),不需要安裝驅動,就能識別Arduino開發板;

  2. 選擇選單欄的工具->開發板,選擇正在使用的開發板Arduino MEGA or MEGA 2560;

  3. 選擇選單欄的工具->埠,選擇正在使用的裝置埠(如果裝置被作業系統成功識別,會在此處顯示出來);

  4. 點選工具欄上的部署按鈕,程式就會被編譯,並部署到裝置上運行了;

2.3.4 資料觀察

點右上角的按鈕開啟串列埠監視器(或者使用快捷鍵Ctrl+Shift+m)

右下角的波特率必須和setup()中設定的數值相同,本例是9600.

可以看到不斷輸出“Hello world!”

至此,一個簡單的Arduino程式,就在裝置上執行起來了。

/*******************************************************************/

本系列課程使用到的Arduino開發板、擴充套件板以及其他相關的感測器,各位可以根據我們文章中介紹的硬體在淘寶網選購。
您也可以在我們的網店跟我學Arduino程式設計中購買,這些相關硬體都由我們為您把關購買,為大家節省選擇的精力與時間。同時也感謝大家對我們這些碼農的支援。

最後再次感謝各位讀者對安豆的支援,謝謝:)

/*******************************************************************/