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