從現(xiàn)在開始,我們將開展一些Arduino的知識學(xué)習(xí),首先我們來研究Arduino的程序結(jié)構(gòu),通過本文的學(xué)習(xí),可以了解更多Arduino世界中使用的新術(shù)語。記住我們的Arduino軟件是開源的,Java environment的源代碼遵循GPL,C/ C++微控制器庫遵循LGPL。
Sketch — 第一個新術(shù)語是Arduino程序“sketch”。(多翻譯為草圖)
程序結(jié)構(gòu)(Structure)
Arduino程序主要分為三個部分: 結(jié)構(gòu)(Structure)、值(變量和常量)和函數(shù)。接下來我們將逐步通過使用Arduino IDE程序來了解如何編寫沒有語法或編譯錯誤的程序。
我們首先從結(jié)構(gòu)(Structure)開始。軟件結(jié)構(gòu)包括兩個主要函數(shù),當(dāng)我們打開Arduino IDE程序,新建一個sketch時(shí),窗口會默認(rèn)給新sketch添加兩個函數(shù),分別為 setup() 和 loop() ,它們的具體功能如下:
Setup( )函數(shù): setup()函數(shù)在sketch開始運(yùn)行時(shí)調(diào)用,使用它可以完成初始化變量,pinMode設(shè)定,庫文件引入等等操作。通常情況下,每次開機(jī)或復(fù)位Arduino開發(fā)板后,setup ( ) 函數(shù)只會運(yùn)行一次。如:
void setup() { servo_test.attach(8); // 舵機(jī)信號腳8 pinMode(8, OUTPUT); }
在setup()函數(shù)中設(shè)定舵機(jī)控制信號引腳為8,pinMode 8腳為輸出引腳。源代碼見:制作寵物自動喂食器
Loop( )函數(shù):運(yùn)行完setup()函數(shù)后,程序會循環(huán)運(yùn)行 loop() 函數(shù)中的內(nèi)容,Loop()函數(shù)可以設(shè)置初始值,它精確地連續(xù)循環(huán)執(zhí)行既定操作,Loop里面的代碼是控制Arduino板如何工作的精髓。如:
void loop() { // 在早上6點(diǎn): servo_test.write(80); //舵機(jī)旋轉(zhuǎn)80度,打開出口 delay(60000); //出口的打開持續(xù)時(shí)間 servo_test.write(0); // 關(guān)閉 delay(25200000UL); //7小時(shí)后再次打開出口 //下午1點(diǎn): servo_test.write(80); //舵機(jī)旋轉(zhuǎn)80度,打開出口 delay(60000); //出口的打開持續(xù)時(shí)間 servo_test.write(0); // 關(guān)閉 delay(25200000UL); //7小時(shí)后再次打開出口 // 晚上8點(diǎn): servo_test.write(80); delay(60000); servo_test.write(0); delay(36000000UL); //10小時(shí)后再次打開出口 }
也就是說,整個代碼中,我們可以將loop里面的內(nèi)容理解為,loop是我們希望Arduino怎么反復(fù)去完成工作的具體標(biāo)準(zhǔn)和要求。
Arduino的主要程序結(jié)構(gòu)就是這樣,是不是很簡單!下一章將介紹Arduino的數(shù)據(jù)類型。