使用 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
目录中,使用者会看到两个子目录,分别是 arduino
和 cpp
,使用者若对 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 函式。
在前面提及的 arduino
和 cpp
两个范例程式目录内,都可以找到相应的 Makefile 来编译使用 86Duino Linux SDK 的程式,直接在该目录下键入 make
指令,即可编译出名为 86duino
的执行档。使用者可自行研究 Makefile 的内容,来瞭解如何以 gcc 编译使用 86Duino Linux SDK 的程式。需进一步说明的是,如果您修改了范例程式,并在程式中呼叫了 86Duino Linux SDK 里提供的函式库,您必须也同时修改 Makefile,将使用到的函式库加入到编译流程中。例如,假设您修改范例程式额外呼叫了 EEPROM
函式库,您应打开 Makefile,找到开头为 THIRD_LIB_NAME
的那一行:
然后在 :=
右边(除了原本的 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.