6.3 應(yīng)用實踐-Arduino編程基礎(chǔ)_第1頁
6.3 應(yīng)用實踐-Arduino編程基礎(chǔ)_第2頁
6.3 應(yīng)用實踐-Arduino編程基礎(chǔ)_第3頁
6.3 應(yīng)用實踐-Arduino編程基礎(chǔ)_第4頁
6.3 應(yīng)用實踐-Arduino編程基礎(chǔ)_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

應(yīng)用實踐——Arduino

編程基礎(chǔ)yuanyc@njcit.cn※通常我們說的Arduino語言,是指Arduino核心庫文件提供的各種應(yīng)用程序編程接口(Application

Programming

Interface,簡稱API)的集合

。必這些API是對更底層的單片機支持庫進(jìn)行二次封裝所形成的?!鶄鹘y(tǒng)開發(fā)方式中,需要理清楚每個寄存器的意義及之間的關(guān)系,然

后通過配置多個寄存器來達(dá)到目的。而

在Arduino中,使用了清楚明了的API替代繁雜的寄存器配置過程。Arduino語言Arduino語言代碼pinMode(13,OUTPUT);digitalWrite(13,HIGH);pinMode(13,OUTPUT)即是設(shè)置引腳的模式,這里設(shè)定了13腳為輸

出模式;而digitalWrite(13,HIGH)是讓13腳輸出高電平數(shù)字信號?!?/p>

這些封裝好的API,使得程序中的語句更容易被理解,我們不用理

會單片機中繁雜的寄存器配置,就能直觀的控制Arduino,增強程序

的可讀性的同時,也提高了開發(fā)效率。Arduino

程序的基本結(jié)構(gòu)void

setup()//put

your

setup

code

here,to

run

once://在這里加入你的setup

代碼,它只會運行

一次:void

loop()//put

your

main

code

here,to

run

repeatedly://

在這里加入你的loop

代碼,它會不斷重復(fù)運行:sketch_nov09a§Arduino/Genuino

Mega

or

Mega

2580,ATmega2580(Mega

2580)在COM3 sketch_nov09a|Arduino

1.8.7文

助Arduino

程序的基本結(jié)構(gòu)Arduino程序基本結(jié)構(gòu)由setup()和loop()兩個函數(shù)組成。※Arduino

控制器通電或復(fù)位后,即會開始執(zhí)行setup()

函數(shù)中的程序,

該部分只會執(zhí)行一次?!ǔN覀儠趕etup()

函數(shù)中完成Arduino

的初始化設(shè)置,如配置I/O

口狀態(tài),初始化串口等操作?!趕etup()函數(shù)中的程序執(zhí)行完后,

Arduino

會接著執(zhí)行

loop()函數(shù)

中的程序?!鵯oop()

函數(shù)是一個循環(huán),其中的程序會不斷的重復(fù)運行?!?/p>

通常我們會在loop()

函數(shù)中完成程序的主要功能,如驅(qū)動各種模塊,

采集數(shù)據(jù)等。特殊標(biāo)點及符號Arduino語言運用了一些符號來描繪程序代碼,例如,注釋和程序

。;

(

)Arduino每條指令(代碼行)都以分號結(jié)束。這樣的語法可以讓你自

由安排代碼,甚至可以將兩條指令放在同一行,只要你用一個分號

把它們隔開就行了(然而,這樣做會讓你的程序代碼更難以閱讀)。例

:delay(100);大括號※{

(

)用來注釋程序代碼的分區(qū)。例如,當(dāng)你為loop()函數(shù)編寫代碼時,必

須把編碼的前后用大括號括起來。例

:void

loop()serial.println(“TSRobot”);注釋注釋這是Arduino程序編譯中忽略的一部分,但是它有助于提醒你自己或

別人這小段程序代碼的功能。在Arduino里有兩種形式的注釋。//單行注釋:這行會被忽略掉1*多行注釋:你可以在這里寫出一整首詩*/常量常量Arduino語言有一些特殊意義的關(guān)鍵字。例

:HIGH

和LOW

用來表示打開或關(guān)閉(高電平或者低電平);Arduino的一個引腳(pin),INPUT

和OUTPUT用來設(shè)定某個特定

引腳是輸入接口還是輸出接口;True和False

,

像它們的字面意思一樣;表示一個條件或一個運算是

真還是假。變量※變量變量保存在Arduino內(nèi)存中,它可以用來保存數(shù)據(jù),你可以應(yīng)用這個

變量的數(shù)據(jù)來計算或者將這個數(shù)據(jù)應(yīng)用到程序中?!兞吭诔绦蛑惺强梢愿牡?。※因為Arduino是一個非常簡單的微處理器,所以當(dāng)你聲明一個變量

時,還必須指定它的類型。必這意味著告訴處理器為你所要存儲的數(shù)據(jù)留出多大的空間。變量范圍※有三個地方可以聲明變量。它們是:※·

在函數(shù)或代碼塊內(nèi)部,稱為局部變量?!?/p>

在函數(shù)參數(shù)的定義中,稱為形式參數(shù)。※·

在所有函數(shù)之外,稱為全局變量?!植孔兞俊诤瘮?shù)或代碼塊中聲明的變量是局部變量。它們只能由該函數(shù)或代碼塊中的語句使用。局部變量不能在它們自己之外運行?!肿兞勘厝肿兞吭谒泻瘮?shù)之外定義,通常位于程序的頂部。全局變量將在程序的整

個生命周期中保持其價值。必全局變量可以被任何函數(shù)訪問。也就是說,

一個全局變量可以在整個程序中聲

明后使用。字符串必字符串用于存儲文本。它們可用在LCD

或Arduino

IDE串口監(jiān)視器窗

口中顯示文本。字符串也可用于存儲用戶輸入。例如,用戶在連接到Arduino的鍵盤上鍵入的字符。字符串的定義方式有兩種,一種是以字符型數(shù)組方式定義,char

字符串名稱[字符個數(shù)];另一種是使用String類型定義。String

字符串名稱;數(shù)組就是通過索引存取的變量列表,它們用來建立數(shù)值的表格。※例如,如果你想存儲不同亮度的LED值,你固然可以創(chuàng)立6個變量,分別為light01

、light02等

,※但更好的方法是用一個如下的數(shù)組int

light[6]={0,20,50,75,100,150};數(shù)組array(

數(shù)

)變量類型

Boolean(布爾)真,假char(字符)128到127占用一字節(jié)byte(字節(jié))0-255

一字節(jié)int(整型)-32768到32767

兩字節(jié)unsigned

int(無符號整型0-65535short(短整型)-32768到32767long(長整型)-2147483648到2417483647float(浮點型)占4個字節(jié),很大double(雙精度浮點型)占8個字節(jié),非常大描述將等號右側(cè)的值存儲

在等號左邊的變量中。兩個操作數(shù)相加從第一個操作數(shù)中減

去第二個操作數(shù)將兩個操作數(shù)相乘用分母除分子模數(shù)運算符和整數(shù)除

后的余數(shù)例子A=BA+B將得出30A-B將得出-10A*B將得出200B/A將得出2B%A將得出0運算符名稱賦值運算符加號減號乘號除號模數(shù)運算符簡寫二十*%運算符/運算符

運算符名稱運算符簡寫描述例子等于==檢查兩個操作數(shù)的值是否相等,如果相

等,則條件為真(true)。(A==B)不為真不等于!=檢查兩個操作數(shù)的值是否相等,如果值

不相等,則條件為真。(A!=B)為真小于<檢查左操作數(shù)的值是否小于右操作數(shù)的

值,如果是,則條件為真。(A<B)為真大于>檢查左操作數(shù)的值是否大于右操作數(shù)的

值,如果是,則條件為真。(A>B)不為真小于或等于<=檢查左操作數(shù)的值是否小于或等于右操

作數(shù)的值,如果是,則條件為真。(A<=B)為真大于或等于>=檢查左操作數(shù)的值是否大于或等于右操

作數(shù)的值,如果是,則條件為真。(A>=B)不為真運算符名稱運算符簡寫描述例子and(與)&&稱為邏輯運算符與。如果兩個操

作數(shù)都是非零,那么條件為真。(A&&B)為真or(或)稱為邏輯運算符或。如果兩個操

作數(shù)中的任何一個是非零,則條

件為真。(A||B)為真not(非)■稱為邏輯運算符非。用于反轉(zhuǎn)其操作數(shù)的邏輯狀態(tài)。如果條件為真,則邏輯運算符非將為假。!(A&&B)為假運算符位運算符描述如果同時存在于兩個操作數(shù)中,二進(jìn)

制AND運算符復(fù)制一位到結(jié)果中。如果存在于任一操作數(shù)中,二進(jìn)制

OR運算符復(fù)制一位到結(jié)果中。如果存在于其中一個操作數(shù)中但不同

時存在于兩個操作數(shù)中,二進(jìn)制XOR運算符復(fù)制一位到結(jié)果中。二進(jìn)制NOT運算符是一元運算符,

具有“翻轉(zhuǎn)”位效果。二進(jìn)制左移運算符。左操作數(shù)的值向

左移動右操作數(shù)指定的位數(shù)。二進(jìn)制右移運算符。左操作數(shù)的值向

右移動右操作數(shù)指定的位數(shù)。例子(A&B)將得出12,即0000

1100(A|B)將得出61,即0011

1101(A^B)將得出49,即0011

0001(一A)將得出-60,即1100

0011A<<2將得出240,即1111

0000A>>2將得出15,即0000

1111運算符名稱a

n

d(

)o

r(

)xor(異或)not(非)shift

left(左移)shift

right(右移

)運算符簡寫&~<<>>

復(fù)合運算符運算符名稱運算符簡寫描述例子自

增++自增運算符,將整數(shù)值增加1A++將得出11--自減運算符,將整數(shù)值減1A--將得出9復(fù)合加十=加且賦值運算符。把右邊操作數(shù)加上左邊操

作數(shù)的結(jié)果賦值給左邊操作數(shù)。B

+

=

A

B

=

B

+

A復(fù)合減-=減且賦值運算符。把左邊操作數(shù)減去右邊操

作數(shù)的結(jié)果賦值給左邊操作數(shù)。B

-

=A等效于B=B

-A復(fù)合乘*=乘且賦值運算符。把右邊操作數(shù)乘以左邊操

作數(shù)的結(jié)果賦值給左邊操作數(shù)。B*=A等價于B=B*A復(fù)合除/=除且賦值運算符。把左邊操作數(shù)除以右邊操

作數(shù)的結(jié)果賦值給左邊操作數(shù)。B/=A等效于B=B/A復(fù)合模數(shù)%=求模且賦值運算符。求兩個操作數(shù)的模賦值

給左邊操作數(shù)B

%

=

A

B

=

B

%

A復(fù)合按位或|=按位或且賦值運算符A|=2與A=A|2相同復(fù)合按位與&=按位與且賦值運算符A&=2與A=A&2相同自減序號函數(shù)和描述delay()函數(shù)delay()函數(shù)的工作方式非常簡單。它接受單個

整數(shù)(或數(shù)字)參數(shù)。此數(shù)字表示時間(以毫秒為單位)。delayMicroseconds()函數(shù)delayMicroseconds()函數(shù)接受單個整數(shù)(或

數(shù)字)參數(shù)。一毫秒內(nèi)有一千微秒,一秒內(nèi)有

一百萬微秒。millis()函數(shù)此函數(shù)用于返回Arduino板開始運行當(dāng)前程序時的毫秒數(shù)。micros()函數(shù)micros()函數(shù)返回Arduino板開始運行當(dāng)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論