Arduino語言
Arduino使用C/C++編寫程序,雖然C++兼容C語言,但這是兩種語言,C語言是一種面向過程的編程語言,C++是一種面向對象的編程語言。早期的Arduino核心庫使用C語言編寫,后來引進了面向對象的思想,目前最新的Arduino核心庫采用C與C++混合編寫而成。
通常我們說的Arduino語言,是指Arduino核心庫文件提供的各種應用程序編程接口(Application Programming Interface,簡稱API)的集合。這些API是對更底層的單片機支持庫進行二次封裝所形成的。例如,使用AVR單片機的Arduino的核心庫是對AVR-Libc(基于GCC的AVR支持庫)的二次封裝。
傳統(tǒng)開發(fā)方式中,你需要厘清每個寄存器的意義及之間的關系,然后通過配置多個寄存器來達到目的。
而在Arduino中,使用了清楚明了的API替代繁雜的寄存器配置過程,如以下代碼:
[C++] 純文本查看 復制代碼
?
001
002
|
pinMode(13,OUTPUT); digitalWrite(13,HIGH); |
pinMode(13,OUTPUT)即是設置引腳的模式,這里設定了13腳為輸出模式;而digitalWrite(13,HIGH) 是讓13腳輸出高電平數字信號。
這些封裝好的API,使得程序中的語句更容易被理解,我們不用理會單片機中繁雜的寄存器配置,就能直觀的控制Arduino,增強程序的可讀性的同時,也提高了開發(fā)效率。
在上一章我們已經看到第一個Arduino程序Blink,如果你使用過C/C++語言,你會發(fā)現Arduino的程序結構與傳統(tǒng)的C/C++結構的不同——Arduino程序中沒有main函數。
其實并不是Arduino沒有main函數,而是main函數的定義隱藏在了Arduino的核心庫文件中。Arduino開發(fā)一般不直接操作main函數,而是使用Setup和loop這個兩個函數。
通過Arduino IDE菜單>文件>示例>01.Basics>BareMinimum可以看到Arduino程序的基本結構:
[C++] 純文本查看 復制代碼
?
001
002
003
004
005
006
007
008
009
|
void setup() { // 在這里加入你的setup代碼,它只會運行一次: } void loop() { // 在這里加入你的loop代碼,它會不斷重復運行: } |
Arduino程序基本結構由setup() 和loop() 兩個函數組成:
[C++] 純文本查看 復制代碼
?
001
|
setup() |
Arduino控制器通電或復位后,即會開始執(zhí)行setup() 函數中的程序,該部分只會執(zhí)行一次。
通常我們會在setup() 函數中完成Arduino的初始化設置,如配置I/O口狀態(tài),初始化串口等操作。
[C++] 純文本查看 復制代碼
?
001
|
loop() |
在setup() 函數中的程序執(zhí)行完后,Arduino會接著執(zhí)行l(wèi)oop() 函數中的程序。而loop()函數是一個死循環(huán),其中的程序會不斷的重復運行。
通常我們會在loop() 函數中完成程序的主要功能,如驅動各種模塊,采集數據等。