使用 86Duino Linux SDK 撰寫程式

86Duino Linux SDK 位於 /home/dmp/86Duino_Linux_SDK 目錄下,提供支援 86Duino 硬體功能的 C++ 函式庫,可讓您在一般 C++ 程式中使用相容 Arduino 的 API 來存取 86Duino 的 I/O 介面,並以 gcc 編譯出在 86Duino 上執行的 Linux 程式。

86Duino Linux SDK 允許使用者用兩種寫法來撰寫程式:類 Arduino sketch 程式寫法和標準 C++ 程式寫法。進入 /home/dmp/86Duino_Linux_SDK/examples 目錄中,使用者會看到兩個子目錄,分別是 arduinocpp,使用者若對 Arduino sketch 程式寫法較為熟悉,可以進入 arduino 子目錄,參考其中的範例程式;另一方面,若使用者對標準 C++ 程式寫法較熟悉,則可進入 cpp 子目錄,參考其中範例程式的寫法。以下我們將以 86Duino 的 Blink sketch 範例程式為例,簡單說明類 Arduino sketch 程式寫法和標準 C++ 程式寫法的差異:

86Duino Coding IDE 裡的 Blink sketch 範例程式如下:

void setup() {
  pinMode(13, OUTPUT);
}

void loop() {
  digitalWrite(13, HIGH); 
  delay(1000);
  digitalWrite(13, LOW);
  delay(1000);
}

在 86Duino Linux SDK 中,以類 Arduino sketch 程式寫法撰寫的 Blink 程式,應改成:

#include "Arduino.h"

void setup() {
  pinMode(13, OUTPUT);
}

void loop() {
  digitalWrite(13, HIGH); 
  delay(1000);
  digitalWrite(13, LOW);
  delay(1000);
}

可以看到,差別只在於使用者需自行在程式裡 include Arduino.h 這個標頭檔。

至於以標準 C++ 程式寫法撰寫的 Blink 程式,則應改成:

#include "Arduino.h"

int main()
{
  pinMode(13, OUTPUT);

  while(1)
  {
    digitalWrite(13, HIGH); 
    delay(1000);
    digitalWrite(13, LOW);
    delay(1000);	
  }		      

  return 0;
}

在 C++ 程式裡,使用者明確地寫出 main() 主函式,此外,也需 include 標頭檔 Arduino.h,才能在程式中呼叫 86Duino 的各個 Standard API 函式。

在前面提及的 arduinocpp 兩個範例程式目錄內,都可以找到相應的 Makefile 來編譯使用 86Duino Linux SDK 的程式,直接在該目錄下鍵入 make 指令,即可編譯出名為 86duino 的執行檔。使用者可自行研究 Makefile 的內容,來瞭解如何以 gcc 編譯使用 86Duino Linux SDK 的程式。需進一步說明的是,如果您修改了範例程式,並在程式中呼叫了 86Duino Linux SDK 裡提供的函式庫,您必須也同時修改 Makefile,將使用到的函式庫加入到編譯流程中。例如,假設您修改範例程式額外呼叫了 EEPROM 函式庫,您應打開 Makefile,找到開頭為 THIRD_LIB_NAME 的那一行:

sd_reader

然後在 := 右邊(除了原本的 TimerOne 之外)加上 EEPROM。注意,您呼叫的函式庫可能還會在内部調用其它函式庫的功能,在這種情況下,您應該在 THIRD_LIB_NAME := 後面將所有被調用到的函式庫加上去,下表列出 86Duino Linux SDK 內建的函式庫裡,所有會互相依賴的函式庫:

函式庫名稱 被調用的函式庫
TFT SPI
FreeIMU1 Wire
RF12 SPI
RF24 SPI
Mirf SPI
RadioHead SPI

關於最新 86Duino Linux SDK 裡支援的 86Duino Standard API 及內建函式庫完整列表,請參閱此連結


黑客天地主頁面

The text of the 86Duino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License.