Arduino語(yǔ)言
Arduino使用C/C++編寫程序,雖然C++兼容C語(yǔ)言,但這是兩種語(yǔ)言,C語(yǔ)言是一種面向過程的編程語(yǔ)言,C++是一種面向?qū)ο蟮木幊陶Z(yǔ)言。早期的Arduino核心庫(kù)使用C語(yǔ)言編寫,后來(lái)引進(jìn)了面向?qū)ο蟮乃枷耄壳?a href="http://www.nxhydt.com/article/zt/" target="_blank">最新的Arduino核心庫(kù)采用C與C++混合編寫而成。
通常我們說(shuō)的Arduino語(yǔ)言,是指Arduino核心庫(kù)文件提供的各種應(yīng)用程序編程接口(Application Programming Interface,簡(jiǎn)稱API)的集合。這些API是對(duì)更底層的單片機(jī)支持庫(kù)進(jìn)行二次封裝所形成的。例如,使用AVR單片機(jī)的Arduino的核心庫(kù)是對(duì)AVR-Libc(基于GCC的AVR支持庫(kù))的二次封裝。
傳統(tǒng)開發(fā)方式中,你需要厘清每個(gè)寄存器的意義及之間的關(guān)系,然后通過配置多個(gè)寄存器來(lái)達(dá)到目的。
關(guān)鍵字:
if.。.else
必須緊接著一個(gè)問題表示式(expression),若這個(gè)表示式為真,緊連著表示式后的代碼就會(huì)被執(zhí)行。若這個(gè)表示式為假,則執(zhí)行緊接著else之后的代碼。 只使用 if不搭配else是被允許的。
范例:
if (val == 1) {
}
for
用來(lái)明定一段區(qū)域代碼重復(fù)指行的次數(shù)。
范例:
for (int i = 0; i 《 10; i++) {
Serial.print(“ciao”);
}
switch case
if敘述是程序里的分叉路口,switch case 是更多選項(xiàng)的路口。Swith case 根據(jù)變量值讓程序有更多的選擇,比起一串冗長(zhǎng)的if敘述,使用swith case可使程序代碼看起來(lái)比較簡(jiǎn)潔。
范例 :
switch (sensorValue) {
case 23:
digitalWrite(13,HIGH);
break;
case 46:
digitalWrite(12,HIGH);
break;
default: // 以上條件都不符合時(shí),預(yù)設(shè)執(zhí)行的動(dòng)作
digitalWrite(12,LOW);
digitalWrite(13,LOW);
}
while
當(dāng)while之后的條件成立時(shí),執(zhí)行括號(hào)內(nèi)的程序代碼。
范例 :
// 當(dāng)sensor值小于512,閃爍LED燈
while (sensorValue 《 512) {
digitalWrite(13,HIGH);
delay(100);
digitalWrite(13,HIGH);
delay(100);
sensorValue = analogRead(1);
}
do...while
和while 相似,不同的是while前的那段程序代碼會(huì)先被執(zhí)行一次,不管特定的條件式為真或?yàn)榧佟R虼巳粲幸欢纬绦虼a至少需要被執(zhí)行一次,就可以使用do…while架構(gòu)。
范例 :
do {
digitalWrite(13,HIGH);
delay(100);
digitalWrite(13,HIGH);
delay(100);
sensorValue = analogRead(1);
} while (sensorValue 《 512);
break
讓程序代碼跳離循環(huán),并繼續(xù)執(zhí)行這個(gè)循環(huán)之后的程序代碼。此外,在break也用于分隔switch case 不同的敘述。
范例 :
//當(dāng)sensor值小于512,閃爍LED燈
do {
// 按下按鈕離開循環(huán)
if (digitalRead(7) == HIGH)
break;
digitalWrite(13,HIGH);
delay(100);
digitalWrite(13,HIGH);
delay(100);
sensorValue = analogRead(1);
} while (sensorValue 《 512);
continue
用于循環(huán)之內(nèi),它可以強(qiáng)制跳離接下來(lái)的程序,并直接執(zhí)行下一個(gè)循環(huán)。
范例 :
for (light = 0; light 《 255; light++)
{
// 忽略數(shù)值介于 140 到 200之間
if ((x 》 140) && (x 《 200))
continue;
analogWrite(PWMpin, light);
delay(10);
}
return
函數(shù)的結(jié)尾可以透過return回傳一個(gè)數(shù)值。
例如,有一個(gè)計(jì)算現(xiàn)在溫度的函數(shù)叫 computeTemperature(),你想要回傳現(xiàn)在的溫度給temperature變量,你可以這樣寫:
int temperature = computeTemperature();
int computeTemperature() {
int temperature = 0;
temperature = (analogRead(0) + 45) / 100;
return temperature;
}
goto
語(yǔ)法符號(hào):
//單行注釋: /*多行注釋:在這個(gè)范圍內(nèi)你可以寫一整首詩(shī)*/
運(yùn)算符:
% 余數(shù)除法== 等于 !=不等于《= 小于等于》= 大于等于&& 交集|| 聯(lián)集
! 反相
數(shù)據(jù)類型:
boolean 布林
布爾變數(shù)的值只能為真(true)或是假(false)
char 字符
單一字符例如 A,和一般的計(jì)算機(jī)做法一樣Arduino 將字符儲(chǔ)存成一個(gè)數(shù)字,即使你看到的明明就是一個(gè)文字。
用數(shù)字表示一個(gè)字符時(shí),它的值有效范圍為 -128 到127。
注意:有兩種主流的計(jì)算機(jī)編碼系統(tǒng)ASCII 和UNICODE。ASCII 表示了127個(gè)字符, 用來(lái)在序列終端機(jī)和分時(shí)計(jì)算器之間傳輸文字。
UNICODE可表示的字符量比較多,在現(xiàn)代計(jì)算機(jī)操作系統(tǒng)內(nèi)它可以用來(lái)表示多國(guó)語(yǔ)言。
在位數(shù)需求較少的信息傳輸時(shí),例如意大利文或英文這類由拉丁文,阿拉伯?dāng)?shù)字和一般常見符號(hào)構(gòu)成的語(yǔ)言,ASCII仍是目前主要用來(lái)交換信息的編碼法。
byte 字節(jié)類型
儲(chǔ)存的數(shù)值范圍為0到255。如同字符一樣字節(jié)型態(tài)的變量只需要用一個(gè)字節(jié)(8位)的內(nèi)存空間儲(chǔ)存。
int 整數(shù)
整數(shù)數(shù)據(jù)型態(tài)用到2字節(jié)的內(nèi)存空間,可表示的整數(shù)范圍為 –32,768 到 32,767; 整數(shù)變量是Arduino內(nèi)最常用到的數(shù)據(jù)型態(tài)。
unsigned int 無(wú)符號(hào)整數(shù)(絕對(duì)值)
無(wú)號(hào)整數(shù)同樣利用2字節(jié)的內(nèi)存空間,無(wú)號(hào)意謂著它不能儲(chǔ)存負(fù)的數(shù)值,因此無(wú)號(hào)整數(shù)可表示的整數(shù)范圍為0 到 65,535。
long 長(zhǎng)整數(shù)
長(zhǎng)整數(shù)利用到的內(nèi)存大小是整數(shù)的兩倍,因此它可表示的整數(shù)范圍從 –2,147,483,648 到 2,147,483,647。
unsigned long 無(wú)符號(hào)長(zhǎng)整數(shù)
無(wú)號(hào)長(zhǎng)整數(shù)可表示的整數(shù)范圍為0 到 4,294,967,295。
float 浮點(diǎn)數(shù)
浮點(diǎn)數(shù)就是用來(lái)表達(dá)有小數(shù)點(diǎn)的數(shù)值,每個(gè)浮點(diǎn)數(shù)會(huì)用掉四字節(jié)的RAM,注意芯片內(nèi)存空間的限制,謹(jǐn)慎的使用浮點(diǎn)數(shù)
double 雙字節(jié)浮點(diǎn)
也叫雙精度浮點(diǎn)數(shù),可表達(dá)最大值為 1.7976931348623157 x 10308。
string 字符串
字符串用來(lái)表達(dá)文字信息,它是由多個(gè)ASCII字符組成(你可以透過序串端口發(fā)送一個(gè)文字訊息或者將之顯示在液晶顯示器上)。字符串中的每一個(gè)字符都用一個(gè)組元組空間儲(chǔ)存,并且在字符串的最尾端加上一個(gè)空字符以提示Ardunio處理器字符串的結(jié)束。下面兩種宣告方式是相同的。
例如:
char string1[] = “Arduino”;//7字符+1空字符
char string2[8] = “Arduino”; // 與上行相同
array 數(shù)組
一串變量可以透過索引去直接取得。假如你想要儲(chǔ)存不同程度的LED亮度時(shí),你可以宣告六個(gè)變量light01,light02,light03,light04,light05,light06,但其實(shí)你有更好的選擇,例如宣告一個(gè)整數(shù)數(shù)組變量如下:
int light[6] = {0 , 20 , 50 , 75 , 100}
“array” 這個(gè)字為沒有直接用在變量宣告,而是[]和{}宣告數(shù)組。
控制指令
數(shù)據(jù)類型轉(zhuǎn)換:
char() byte() int() long() float()
常量:在Arduino語(yǔ)言中事先定義了一些具特殊用途的保留字。
HIGH | LOW
表示數(shù)字IO口的電平,HIGH 表示高電平(1),LOW 表示低電平(0)。 HIGH 和LOW 也用來(lái)表示你開啟或是關(guān)閉了一個(gè)Arduino的腳位(pin)
INPUT | OUTPUT
表示數(shù)字IO口的方向,INPUT 表示輸入(高阻態(tài)),OUTPUT 表示輸出(AVR能提供5V電壓 40mA電流)。
true | false
true 表示真(1),false表示假(0)。
變數(shù):
變量用來(lái)指定Arduino 內(nèi)存中的一個(gè)位置,變量可以用來(lái)儲(chǔ)存數(shù)據(jù),程序人員可以透過腳本代碼去不限次數(shù)的操作變數(shù)的值。
因?yàn)锳rduino 是一個(gè)非常簡(jiǎn)易的微處理器,但你要宣告一個(gè)變量時(shí)必須先定義他的數(shù)據(jù)型態(tài),好讓微處理器知道準(zhǔn)備多大的空間以儲(chǔ)存這個(gè)變量值。
以上為基礎(chǔ)c語(yǔ)言的關(guān)鍵字和符號(hào),有c語(yǔ)言基礎(chǔ)的都應(yīng)該了解其含義,這里也不作過多的解釋。
Arduino 語(yǔ)言
結(jié)構(gòu)
1、聲明變量及接口名稱(int val;int ledPin=13;)。
2、void setup()
在程序開始時(shí)使用,在這個(gè)函數(shù)范圍內(nèi)放置初始化Arduino 板子的程式,主要程式開始撰寫前, 使Arduino 板子裝置妥當(dāng)?shù)闹噶羁梢猿跏蓟兞俊⒐苣_接口模式、啟用庫(kù)等(例如:pinMode(ledPin,OUTPUT);)。
3、void loop()
在setup()函數(shù)之后,即初始化之后,loop() 讓你的程序循環(huán)地被執(zhí)行。使用它來(lái)運(yùn)轉(zhuǎn)Arduino。連續(xù)執(zhí)行函數(shù)內(nèi)的語(yǔ)句,這部份的程式會(huì)一直重復(fù)的被執(zhí)行,直到Arduino 板子被關(guān)閉。
功能
數(shù)字 I/O
pinMode(pin, mode)
數(shù)字IO口輸入輸出模式定義函數(shù),將接口定義為輸入或輸出接口,用在setup()函數(shù)里,pin表示為0~13接口名稱, mode表示為INPUT或OUTPUT。即“ pinMode(接口名稱,OUTPUT或INPUT)”。
范例 :
pinMode(7,INPUT); // 將腳位 7 設(shè)定為輸入模式
pinMode(1,INPUT);//將腳位1設(shè)定為輸入模式
pinMode(2,INPUT);//將腳位2設(shè)定為輸入模式
pinMode(3,INPUT);//將腳位3設(shè)定為輸入模式
pinMode(4,INPUT);
pinMode(5,INPUT);
pinMode(6,INPUT);
digitalWrite(pin, value)
數(shù)字IO口輸出電平定義函數(shù),將數(shù)字接口值至高或低、開或關(guān),pin表示為0~13,value表示為HIGH或LOW,即digitalWrite(接口名稱, HIGH或LOW)。但腳位必須先透過pinMode明示為輸入或輸出模式digitalWrite才能生效。比如定義HIGH可以驅(qū)動(dòng)LED。
范例 :
digitalWrite(8,HIGH); //將腳位 8設(shè)定輸出高電位
int digitalRead(pin)
數(shù)字IO口讀輸入電平函數(shù),讀出數(shù)字接口的值,pin表示為0~13,value表示為HIGH或LOW,即digitalRead(接口名稱)。比如可以讀數(shù)字傳感器。當(dāng)感測(cè)到腳位處于高電位時(shí)時(shí)回傳HIGH,否則回傳LOW。
范例 :
val = digitalRead(7); // 讀出腳位 7 的值并指定給 val
模擬 I/O
int analogRead(pin)
模擬IO口讀函數(shù),從指定的模擬接口讀取值,Arduino對(duì)該模擬值進(jìn)行10-bit的數(shù)字轉(zhuǎn)換,這個(gè)方法將輸入的0-5電壓值轉(zhuǎn)換為 0到1023間的整數(shù)值。pin表示為0~5(Arduino Diecimila為0~5,Arduino nano為0~7)。即“analogRead(接口名稱)”,比如可以讀模擬傳感器(10位AD,0~5V表示為0~1023)。
范例 :
val = analogRead(0); //讀出類比腳位 0 的值并指定給 val變數(shù)
analogWrite(pin, value)
數(shù)字IO口PWM輸出函數(shù),給一個(gè)接口寫入模擬值(PWM波)。改變PWM腳位的輸出電壓值。對(duì)于 ATmega168芯片的Arduino(包括Mini或BT),該函數(shù)可以工作于 3, 5, 6, 9, 10和 11號(hào)接口,即“analogWrite(接口名稱, 數(shù)值)”,pin表示3, 5, 6, 9, 10, 11,value表示為0~255。比如可用于電機(jī)PWM調(diào)速或音樂播放。
例如:輸出電壓2.5伏特(V),該值大約是128。
范例 :
analogWrite(9,128); // 輸出電壓約2.5伏特(V)
擴(kuò)展 I/O
shiftOut(dataPin, clockPin, bitOrder, value)
SPI外部IO擴(kuò)展函數(shù),通常使用帶SPI接口的74HC595做8個(gè)IO擴(kuò)展,把資料傳給用來(lái)延伸數(shù)位輸出的暫存器,此函式通常使用在延伸數(shù)位的輸出。函式使用一個(gè)腳位表示資料、一個(gè)腳位表示時(shí)脈。dataPin為數(shù)據(jù)口,clockPin為時(shí)鐘口,bitOrder用來(lái)表示位元間移動(dòng)的方式,為數(shù)據(jù)傳輸方向(MSBFIRST高位在前,LSBFIRST低位在前),value會(huì)以byte形式輸出,表示所要傳送的數(shù)據(jù)(0~255),另外還需要一個(gè)IO口做74HC595的使能控制。
范例 :
shiftOut(dataPin, clockPin, LSBFIRST, 255);
unsigned long pulseIn(pin, value)
脈沖長(zhǎng)度記錄函數(shù),設(shè)定讀取腳位狀態(tài)的持續(xù)時(shí)間,返回時(shí)間參數(shù)(us),例如使用紅外線、加速度感測(cè)器測(cè)得某一項(xiàng)數(shù)值時(shí),在時(shí)間單位內(nèi)不會(huì)改變狀態(tài)。pin表示為0~13,value為HIGH或LOW。比如value為HIGH,那么當(dāng)pin輸入為高電平時(shí),開始計(jì)時(shí),當(dāng)pin輸入為低電平時(shí),停止計(jì)時(shí),然后返回該時(shí)間。
范例 :
time = pulsein(7,HIGH); // 設(shè)定腳位7的狀態(tài)在時(shí)間單位內(nèi)保持為HIGH
時(shí)間函數(shù)
unsigned long millis()
返回時(shí)間函數(shù)(單位ms), 回傳晶片開始執(zhí)行到目前的毫秒,該函數(shù)是指,當(dāng)程序運(yùn)行就開始計(jì)時(shí)并返回記錄的參數(shù),該參數(shù)溢出大概需要50天時(shí)間。
范例:
duration = millis()-lastTime; // 表示自“l(fā)astTime”至當(dāng)下的時(shí)間
delay(ms) 延時(shí)函數(shù)(單位ms),延時(shí)一段時(shí)間,暫停晶片執(zhí)行多少毫秒,
delay(1000)為一秒。
范例:
delay(500); //暫停半秒(500毫秒)
delayMicroseconds(us) 延時(shí)函數(shù)(單位us)暫停晶片執(zhí)行多少微秒。
delayMicroseconds(1000); //暫停1豪秒
數(shù)學(xué)函數(shù)
min(x, y)
求最小值 ,回傳兩數(shù)之間較小者
范例:
val = min(10,20); // 回傳10
max(x, y)
求最大值 ,回傳兩數(shù)之間較大者
范例:
val = max(10,20); // 回傳20
abs(x)
計(jì)算絕對(duì)值 ,回傳該數(shù)的絕對(duì)值,可以將負(fù)數(shù)轉(zhuǎn)正數(shù)。
范例:
val = abs(-5); // 回傳5
constrain(x, a, b) 約束函數(shù),下限a,上限b,判斷x變數(shù)位于a與b之間的狀態(tài)。x若小于a回傳a;介于a與b之間回傳x本身;大于b回傳b
范例:
val = constrain(analogRead(0), 0, 255); // 忽略大于255的數(shù)
map(value, fromLow, fromHigh, toLow, toHigh)
約束函數(shù),value必須在fromLow與toLow之間和fromHigh與toHigh之間。將value變數(shù)依照f(shuō)romLow與fromHigh范圍,對(duì)等轉(zhuǎn)換至toLow與toHigh范圍。時(shí)常使用于讀取類比訊號(hào),轉(zhuǎn)換至程式所需要的范圍值。
例如:
val = map(analogRead(0),0,1023,100, 200); // 將analog0 所讀取到的訊號(hào)對(duì)等轉(zhuǎn)換至100,200之間的數(shù)值。
pow(base, exponent)
開方函數(shù),base的exponent次方。回傳一個(gè)數(shù)(base)的指數(shù)(exponent)值。
范例:
double x = pow(y, 32); // 設(shè)定x為y的32次方
sq(x) 平方
sqrt(x) 開根號(hào)
回傳double型態(tài)的取平方根值。
范例:
double a = sqrt(1138); // 回傳1138平方根的近似值 33.73425674438
三角函數(shù)
sin (rad)
回傳角度(radians)的三角函數(shù)sine值。
范例:
double sine = sin(2); // 近似值 0.90929737091
cos(rad)
回傳角度(radians)的三角函數(shù)cosine值。
范例:
double cosine = cos(2); //近似值-0.41614685058
tan(rad)
回傳角度(radians)的三角函數(shù)tangent值。
范例:
double tangent = tan(2); //近似值-2.18503975868
隨機(jī)數(shù)函數(shù)
randomSeed(seed)
隨機(jī)數(shù)端口定義函數(shù),seed表示讀模擬口analogRead(pin)函數(shù) 。
事實(shí)上在Arduino里的亂數(shù)是可以被預(yù)知的。所以如果需要一個(gè)真正的亂數(shù),可以呼叫此函式重新設(shè)定產(chǎn)生亂數(shù)種子。你可以使用亂數(shù)當(dāng)作亂數(shù)的種子,以確保數(shù)字以隨機(jī)的方式出現(xiàn),通常會(huì)使用類比輸入當(dāng)作亂數(shù)種子,藉此可以產(chǎn)生與環(huán)境有關(guān)的亂數(shù)(例如:無(wú)線電波、宇宙雷射線、電話和螢光燈發(fā)出的電磁波等)。
范例:
randomSeed(analogRead(5)); // 使用類比輸入當(dāng)作亂數(shù)種子
long random(max)
隨機(jī)數(shù)函數(shù),返回?cái)?shù)據(jù)大于等于0,小于max。
范例:
long randnum = random(11); // 回傳 0 -10之間的數(shù)字
long random(min, max)
隨機(jī)數(shù)函數(shù),返回?cái)?shù)據(jù)大于等于min,小于max。
范例:
long randnum = random(0, 100); // 回傳0 – 99 之間的數(shù)字
外部中斷函數(shù)
attachInterrupt(interrupt, , mode)
外部中斷只能用到數(shù)字IO口2和3,interrupt表示中斷口初始0或1,表示一個(gè)功能函數(shù),mode:LOW低電平中斷,CHANGE有變化就中斷,RISING上升沿中斷,F(xiàn)ALLING 下降沿中斷。
detachInterrupt(interrupt)
中斷開關(guān),interrupt=1 開,interrupt=0 關(guān)。
中斷使能函數(shù)
interrupts() 使能中斷
noInterrupts() 禁止中斷
串口收發(fā)函數(shù)
Serial.begin(speed)
串口定義波特率函數(shù),設(shè)置串行每秒傳輸數(shù)據(jù)的速率(波特率),可以指定Arduino從電腦交換訊息的速率,通常我們使用9600 bps。,speed表示波特率,如9600,19200等。在同計(jì)算機(jī)通訊時(shí),使用下面這些值:300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600或 115200 bps(每秒位元組)。。你也可以在任何時(shí)候使用其它的值,比如,與0號(hào)或1號(hào)插口通信就要求特殊的波特率。用在setup()函數(shù)里
范例:
Serial.begin(9600)
int Serial.available()
判斷緩沖器狀態(tài)。回傳有多少位元組(bytes)的資料尚未被read()函式讀取,如果回傳值是0代表所有序列埠上資料都已經(jīng)被read()函式讀取。
范例:
int count = Serial.available();
int Serial.read()
讀串口并返回收到參數(shù)。Serial.read()——讀取持續(xù)輸入的數(shù)據(jù)。讀取1byte的序列資料
范例:
int data = Serial.read();
Serial.flush()
清空緩沖器。 有時(shí)候因?yàn)橘Y料速度太快,超過程式處理資料的速度,你可以使用此函式清除緩沖區(qū)內(nèi)的資料。經(jīng)過此函式可以確保緩沖區(qū)(buffer)內(nèi)的資料都是最新的。
范例:
Serial.flush();
Serial.print(data)
從串行端口輸出數(shù)據(jù)。Serial.print(數(shù)據(jù))默認(rèn)為十進(jìn)制等于Serial.print(數(shù)據(jù),DEC)。
Serial.print(data, encoding)
經(jīng)序列埠傳送資料,提供編碼方式的選項(xiàng)。Serial.print(數(shù)據(jù),數(shù)據(jù)的進(jìn)制)如果沒有指定,預(yù)設(shè)以一般文字傳送。
范例:
Serial.print(75); // 列印出 “75”
Serial.print(75, DEC); //列印出 “75”
Serial.print(75, HEX); // “4B” (75 的十六進(jìn)位)
Serial.print(75, OCT); // “113” (75 in的八進(jìn)位)
Serial.print(75, BIN); // “1001011” (75的二進(jìn)位)
Serial.print(75, BYTE); // “K” (以byte進(jìn)行傳送,顯示以ASCII編碼方式)
Serial.println(data)
從串行端口輸出數(shù)據(jù),跟隨一個(gè)回車和一個(gè)換行符。這個(gè)函數(shù)所取得的值與 Serial.print()一樣。
Serial.println(data, encoding)
與Serial.print()相同,但會(huì)在資料尾端加上換行字元( )。意思如同你在鍵盤上打了一些資料后按下Enter。
范例:
Serial.println(75); //列印出“75 ”
Serial.println(75, DEC); //列印出“75 ”
Serial.println(75, HEX); // “4B ”
Serial.println(75, OCT); // “113 ”
Serial.println(75, BIN); // “1001011 ”
Serial.println(75, BYTE); // “K ”
以上幾個(gè)函數(shù)是常用基本函數(shù),還有很多以后會(huì)慢慢學(xué)習(xí)
Arduino語(yǔ)言庫(kù)文件
官方庫(kù)文件
· EEPROM - EEPROM讀寫程序庫(kù)
· Ethernet - 以太網(wǎng)控制器程序庫(kù)
· LiquidCrystal - LCD控制程序庫(kù)
· Servo - 舵機(jī)控制程序庫(kù)
· SoftwareSerial - 任何數(shù)字IO口模擬串口程序庫(kù)
· Stepper - 步進(jìn)電機(jī)控制程序庫(kù)
· Wire - TWI/I2C總線程序庫(kù)
· Matrix - LED矩陣控制程序庫(kù)
· Sprite - LED矩陣圖象處理控制程序庫(kù)
Arduuino復(fù)合運(yùn)算符
+= , -= , *= , /=
對(duì)一個(gè)變量和另一個(gè)參數(shù)或變量完成一個(gè)數(shù)學(xué)運(yùn)算。+=(以及其他)可以縮短語(yǔ)法長(zhǎng)度。
Syntax語(yǔ)法
x += y; // 等價(jià)于 x = x + y;
x -= y; // 等價(jià)于 x = x - y;
x *= y; // 等價(jià)于 x = x * y;
x /= y; // 等價(jià)于 x = x / y;
Parameters參數(shù)
x:任何變量類型
y:任何變量類型或常數(shù)
Examples范例
x = 2;
x += 4; // x現(xiàn)在為6
x -= 3; // x現(xiàn)在為3
x *= 10; // x現(xiàn)在為30
x /= 2; // x現(xiàn)在為15
Syntax語(yǔ)法
x++; // increment x by one and returns the old value of x
// 將x的值加1并返回原來(lái)的x的值。 ++x; // increment x by one and returns the new value of x // 將x的值加1并返回現(xiàn)在的x的值。
x-- ; // decrement x by one and returns the old value of x // 將x的值減1并返回原來(lái)的x的值。
--x ; // decrement x by one and returns the new value of x // 將x的值減1并返回現(xiàn)在的x的值。
Parameters參數(shù)
x: an integer or long (possibly unsigned)
x:一個(gè)整數(shù)或長(zhǎng)整數(shù)(可以無(wú)符號(hào))
Returns返回
The original or newly incremented / decremented value of the variable.
返回變量原始值或增加/消耗后的新值。
Examples范例
x = 2;
y = ++x; // x now contains 3, y contains 3 // x現(xiàn)在為3,y為3
y = x--; // x contains 2 again, y still contains 3 // x現(xiàn)在仍然為2,y將為3
評(píng)論
查看更多