Arduino語言


Arduino語言

 

Arduino語言是建立在C/C++基礎上的,其實也就是基礎的C語言,Arduino語言只不過把AVR單片機(微控制器)相關的一些參數設置都函數化,不用我們去了解他的底層,讓我們不了解AVR單片機(微控制器)的朋友也能輕松上手。

在與Arduino DIYER接觸的這段時間里,發現有些朋友對Arduino語言還是比較難入手,那么這里我就簡單的注釋一下Arduino語言(本人也是半罐子水,有錯的地方還請各位指正)。

基礎C語言

關鍵字:

if...else

必須緊接着一個問題表示式(expression),若這個表示式為真,緊連着表示式后的代碼就會被執行。若這個表示式為假,則執行緊接着else之后的代碼. 只使用 if不搭配else是被允許的。

范例:

if (val == 1) {

digitalWrite(LED,HIGH);

}

for

用來明定一段區域代碼重復指行的次數。

范例:

for (int i = 0; i < 10; i++) {

Serial.print("ciao");

}

switch case

if敘述是程序里的分叉路口,switch case 是更多選項的路口。Swith case 根據變量值讓程序有更多的選擇,比起一串冗長的if敘述,使用swith case可使程序代碼看起來比較簡潔。

范例 :

switch (sensorValue) {

case 23:

digitalWrite(13,HIGH);

break;

case 46:

digitalWrite(12,HIGH);

break;

default: // 以上條件都不符合時,預設執行的動作

digitalWrite(12,LOW);

digitalWrite(13,LOW);

}

while

當while之后的條件成立時,執行括號內的程序代碼。

范例 :

// 當sensor值小於512,閃爍LED燈

sensorValue = analogRead(1);

while (sensorValue < 512) {

digitalWrite(13,HIGH);

delay(100);

digitalWrite(13,HIGH);

delay(100);

sensorValue = analogRead(1);

}

do... while

和while 相似,不同的是while前的那段程序代碼會先被執行一次,不管特定的條件式為真或為假。因此若有一段程序代碼至少需要被執行一次,就可以使用do…while架構。

范例 :

do {

digitalWrite(13,HIGH);

delay(100);

digitalWrite(13,HIGH);

delay(100);

sensorValue = analogRead(1);

} while (sensorValue < 512);

break

讓程序代碼跳離循環,並繼續執行這個循環之后的程序代碼。此外,在break也用於分隔switch case 不同的敘述。

范例 :

//當sensor值小於512,閃爍LED燈

do {

// 按下按鈕離開循環

if (digitalRead(7) == HIGH)

break;

digitalWrite(13,HIGH);

delay(100);

digitalWrite(13,HIGH);

delay(100);

sensorValue = analogRead(1);

} while (sensorValue < 512);

continue

用於循環之內,它可以強制跳離接下來的程序,並直接執行下一個循環。

范例 :

for (light = 0; light < 255; light++)

{

// 忽略數值介於 140 到 200之間

if ((x > 140) && (x < 200))

continue;

analogWrite(PWMpin, light);

delay(10);

}

return

函數的結尾可以透過return回傳一個數值。

例如,有一個計算現在溫度的函數叫 computeTemperature(),你想要回傳現在的溫度給temperature變量,你可以這樣寫:

int temperature = computeTemperature();

int computeTemperature() {

int temperature = 0;

temperature = (analogRead(0) + 45) / 100;

return temperature;

}

goto

語法符號:

;  (分號)

Arduino 語言每一行程序都是以分號為結尾。這樣的語法讓你可以自由地安排代碼,你可以將兩個指令放置在同一行,只要中間用分號隔開。 (但這樣做可能降低程式的可讀性。)
范例:
delay(100);

{} (大括號)

大括號用來將程式代碼分成一個又一個的區塊,如以下范例所示,在loop()函數的前、后,必須用大括號括起來。

范例:
void loop(){
Serial.pritln("cial");
}
程式的注釋就是對代碼的解釋和說明,編寫注釋有助於程式設計師(或其他人)了解代碼的功能。
Arduino處理器在對程式碼進行編譯時會忽略注釋的部份。
Arduino 語言中的編寫注釋有兩種方式
//單行注釋:這整行的文字會被處理器忽略
/*多行注釋:
在這個范圍內你可以
寫一整首詩
*/
運算符:

=

+ 相加

- 相減

* 相乘

/ 相除

% 余數除法

== 等於

!=不等於

< 小於

> 大於

<= 小於等於

>= 大於等於

&& 交集

|| 聯集

! 反相

++ 累加

-- 遞減

+=

-=

*=

/=

數據類型:

boolean 布林

布爾變數的值只能為真(true)或是假(false)
char 字符

單一字符例如 A,和一般的計算機做法一樣Arduino 將字符儲存成一個數字,即使你看到的明明就是一個文字。

用數字表示一個字符時,它的值有效范圍為 -128 到127。

注意:有兩種主流的計算機編碼系統ASCII 和UNICODE。ASCII 表示了127個字符, 用來在序列終端機和分時計算器之間傳輸文字。

UNICODE可表示的字符量比較多,在現代計算機操作系統內它可以用來表示多國語言。

在位數需求較少的信息傳輸時,例如意大利文或英文這類由拉丁文,阿拉伯數字和一般常見符號構成的語言,ASCII仍是目前主要用來交換信息的編碼法。
byte 字節類型

儲存的數值范圍為0到255。如同字符一樣字節型態的變量只需要用一個字節(8位)的內存空間儲存。
int 整數

整數數據型態用到2字節的內存空間,可表示的整數范圍為 –32,768 到 32,767; 整數變量是Arduino內最常用到的數據型態。
unsigned int      無符號整數(絕對值)

無號整數同樣利用2字節的內存空間,無號意謂着它不能儲存負的數值,因此無號整數可表示的整數范圍為0 到 65,535。
long 長整數

長整數利用到的內存大小是整數的兩倍,因此它可表示的整數范圍從 –2,147,483,648 到 2,147,483,647。
unsigned long        無符號長整數

無號長整數可表示的整數范圍為0 到 4,294,967,295。
float 浮點數

浮點數就是用來表達有小數點的數值,每個浮點數會用掉四字節的RAM,注意芯片內存空間的限制,謹慎的使用浮點數
double 雙字節浮點

也叫雙精度浮點數,可表達最大值為 1.7976931348623157 x 10308。
string 字符串

字符串用來表達文字信息,它是由多個ASCII字符組成(你可以透過序串端口發送一個文字訊息或者將之顯示在液晶顯示器上)。字符串中的每一個字符都用一個組元組空間儲存,並且在字符串的最尾端加上一個空字符以提示Ardunio處理器字符串的結束。下面兩種宣告方式是相同的。

例如:

char string1[] = "Arduino";//7字符+1空字符

char string2[8] = "Arduino"; // 與上行相同
array 數組

一串變量可以透過索引去直接取得。假如你想要儲存不同程度的LED亮度時,你可以宣告六個變量light01,light02,light03,light04,light05,light06,但其實你有更好的選擇,例如宣告一個整數數組變量如下:

int  light[6] = {0 , 20 , 50 , 75 , 100}

"array" 這個字為沒有直接用在變量宣告,而是[]和{}宣告數組。
控制指令

數據類型轉換:

char()

byte()

int()

long()

float()

常量:在Arduino語言中事先定義了一些具特殊用途的保留字。

HIGH | LOW

表示數字IO口的電平,HIGH 表示高電平(1),LOW 表示低電平(0)。 HIGH 和LOW 也用來表示你開啟或是關閉了一個Arduino的腳位(pin)

INPUT | OUTPUT

表示數字IO口的方向,INPUT 表示輸入(高阻態),OUTPUT 表示輸出(AVR能提供5V電壓 40mA電流)。

true | false

true 表示真(1),false表示假(0)。

變數:

變量用來指定Arduino 內存中的一個位置,變量可以用來儲存數據,程序人員可以透過腳本代碼去不限次數的操作變數的值。

因為Arduino 是一個非常簡易的微處理器,但你要宣告一個變量時必須先定義他的數據型態,好讓微處理器知道准備多大的空間以儲存這個變量值。

以上為基礎c語言的關鍵字和符號,有c語言基礎的都應該了解其含義,這里也不作過多的解釋。

Arduino 語言

結構

1、聲明變量及接口名稱(int val;int ledPin=13;)。

2、void setup()

在程序開始時使用,在這個函數范圍內放置初始化Arduino 板子的程式,主要程式開始撰寫前, 使Arduino 板子裝置妥當的指令可以初始化變量、管腳接口模式、啟用庫等(例如:pinMode(ledPin,OUTPUT);)。
3、void loop()

在setup()函數之后,即初始化之后,loop() 讓你的程序循環地被執行。使用它來運轉Arduino。連續執行函數內的語句,這部份的程式會一直重復的被執行,直到Arduino 板子被關閉。

功能

數字 I/O

pinMode(pin, mode)

數字IO口輸入輸出模式定義函數,將接口定義為輸入或輸出接口,用在setup()函數里,pin表示為0~13接口名稱, mode表示為INPUT或OUTPUT。即“ pinMode(接口名稱,OUTPUT或INPUT)”。

范例 :

pinMode(7,INPUT); // 將腳位 7 設定為輸入模式

digitalWrite(pin, value)

數字IO口輸出電平定義函數,將數字接口值至高或低、開或關,pin表示為0~13,value表示為HIGH或LOW,即digitalWrite(接口名稱, HIGH或LOW)。但腳位必須先透過pinMode明示為輸入或輸出模式digitalWrite才能生效。比如定義HIGH可以驅動LED。

范例 :

digitalWrite(8,HIGH); //將腳位 8設定輸出高電位

int digitalRead(pin)

數字IO口讀輸入電平函數,讀出數字接口的值,pin表示為0~13,value表示為HIGH或LOW,即digitalRead(接口名稱)。比如可以讀數字傳感器。當感測到腳位處於高電位時時回傳HIGH,否則回傳LOW。

范例 :

val = digitalRead(7); // 讀出腳位 7 的值並指定給 val

模擬 I/O

int analogRead(pin)

模擬IO口讀函數,從指定的模擬接口讀取值,Arduino對該模擬值進行10-bit的數字轉換,這個方法將輸入的0-5電壓值轉換為 0到1023間的整數值。pin表示為0~5(Arduino Diecimila為0~5,Arduino nano為0~7)。即“analogRead(接口名稱)”,比如可以讀模擬傳感器(10位AD,0~5V表示為0~1023)。

范例 :

val = analogRead(0); //讀出類比腳位 0 的值並指定給 val變數

analogWrite(pin, value)

數字IO口PWM輸出函數,給一個接口寫入模擬值(PWM波)。改變PWM腳位的輸出電壓值。對於 ATmega168芯片的Arduino(包括Mini或BT),該函數可以工作於 3, 5, 6, 9, 10和 11號接口,即“analogWrite(接口名稱, 數值)”,pin表示3, 5, 6, 9, 10, 11,value表示為0~255。比如可用於電機PWM調速或音樂播放。

例如:輸出電壓2.5伏特(V),該值大約是128。

范例 :

analogWrite(9,128); // 輸出電壓約2.5伏特(V)

擴展 I/O

shiftOut(dataPin, clockPin, bitOrder, value)

SPI外部IO擴展函數,通常使用帶SPI接口的74HC595做8個IO擴展,把資料傳給用來延伸數位輸出的暫存器,此函式通常使用在延伸數位的輸出。函式使用一個腳位表示資料、一個腳位表示時脈。dataPin為數據口,clockPin為時鍾口,bitOrder用來表示位元間移動的方式,為數據傳輸方向(MSBFIRST高位在前,LSBFIRST低位在前),value會以byte形式輸出,表示所要傳送的數據(0~255),另外還需要一個IO口做74HC595的使能控制。

范例 :

shiftOut(dataPin, clockPin, LSBFIRST, 255);

unsigned long pulseIn(pin, value)

脈沖長度記錄函數,設定讀取腳位狀態的持續時間,返回時間參數(us),例如使用紅外線、加速度感測器測得某一項數值時,在時間單位內不會改變狀態。pin表示為0~13,value為HIGH或LOW。比如value為HIGH,那么當pin輸入為高電平時,開始計時,當pin輸入為低電平時,停止計時,然后返回該時間。

范例 :

time = pulsein(7,HIGH); // 設定腳位7的狀態在時間單位內保持為HIGH

時間函數

unsigned long millis()

返回時間函數(單位ms), 回傳晶片開始執行到目前的毫秒,該函數是指,當程序運行就開始計時並返回記錄的參數,該參數溢出大概需要50天時間。

范例:

duration = millis()-lastTime; // 表示自"lastTime"至當下的時間

delay(ms) 延時函數(單位ms),延時一段時間,暫停晶片執行多少毫秒,

delay(1000)為一秒。

范例:

delay(500); //暫停半秒(500毫秒)

delayMicroseconds(us) 延時函數(單位us)暫停晶片執行多少微秒。

delayMicroseconds(1000); //暫停1豪秒

數學函數

min(x, y)

求最小值 ,回傳兩數之間較小者

范例:

val = min(10,20); // 回傳10

max(x, y)

求最大值 ,回傳兩數之間較大者

范例:

val = max(10,20); // 回傳20

abs(x)

計算絕對值 ,回傳該數的絕對值,可以將負數轉正數。

范例:

val = abs(-5); // 回傳5

constrain(x, a, b) 約束函數,下限a,上限b,判斷x變數位於a與b之間的狀態。x若小於a回傳a;介於a與b之間回傳x本身;大於b回傳b

范例:

val = constrain(analogRead(0), 0, 255); // 忽略大於255的數

map(value, fromLow, fromHigh, toLow, toHigh)

約束函數,value必須在fromLow與toLow之間和fromHigh與toHigh之間。將value變數依照fromLow與fromHigh范圍,對等轉換至toLow與toHigh范圍。時常使用於讀取類比訊號,轉換至程式所需要的范圍值。

例如:

val = map(analogRead(0),0,1023,100, 200); // 將analog0 所讀取到的訊號對等轉換至100,200之間的數值。

pow(base, exponent)

開方函數,base的exponent次方。回傳一個數(base)的指數(exponent)值。

范例:

double x = pow(y, 32); // 設定x為y的32次方

sq(x) 平方

sqrt(x) 開根號

回傳double型態的取平方根值。

范例:

double a = sqrt(1138); // 回傳1138平方根的近似值 33.73425674438

三角函數

sin (rad)

回傳角度(radians)的三角函數sine值。

范例:

double sine = sin(2); // 近似值 0.90929737091

cos(rad)  

回傳角度(radians)的三角函數cosine值。

范例:

double cosine = cos(2); //近似值-0.41614685058

tan(rad)  

回傳角度(radians)的三角函數tangent值。

范例:

double tangent = tan(2); //近似值-2.18503975868

隨機數函數

randomSeed(seed)

隨機數端口定義函數,seed表示讀模擬口analogRead(pin)函數 。

事實上在Arduino里的亂數是可以被預知的。所以如果需要一個真正的亂數,可以呼叫此函式重新設定產生亂數種子。你可以使用亂數當作亂數的種子,以確保數字以隨機的方式出現,通常會使用類比輸入當作亂數種子,藉此可以產生與環境有關的亂數(例如:無線電波、宇宙雷射線、電話和螢光燈發出的電磁波等)。

范例:

randomSeed(analogRead(5)); // 使用類比輸入當作亂數種子

long random(max)

隨機數函數,返回數據大於等於0,小於max。

范例:

long randnum = random(11);  // 回傳 0 -10之間的數字

long random(min, max)

隨機數函數,返回數據大於等於min,小於max。

范例:

long randnum = random(0, 100); // 回傳0 – 99 之間的數字

外部中斷函數

attachInterrupt(interrupt, , mode)

外部中斷只能用到數字IO口2和3,interrupt表示中斷口初始0或1,表示一個功能函數,mode:LOW低電平中斷,CHANGE有變化就中斷,RISING上升沿中斷,FALLING 下降沿中斷。

detachInterrupt(interrupt)

中斷開關,interrupt=1 開,interrupt=0 關。

中斷使能函數

interrupts() 使能中斷

noInterrupts() 禁止中斷

串口收發函數

Serial.begin(speed)

串口定義波特率函數,設置串行每秒傳輸數據的速率(波特率),可以指定Arduino從電腦交換訊息的速率,通常我們使用9600 bps。,speed表示波特率,如9600,19200等。在同計算機通訊時,使用下面這些值:300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600或 115200 bps(每秒位元組)。。你也可以在任何時候使用其它的值,比如,與0號或1號插口通信就要求特殊的波特率。用在setup()函數里

范例:

Serial.begin(9600)

int Serial.available()

判斷緩沖器狀態。回傳有多少位元組(bytes)的資料尚未被read()函式讀取,如果回傳值是0代表所有序列埠上資料都已經被read()函式讀取。

范例:

int count = Serial.available();

int Serial.read()

讀串口並返回收到參數。Serial.read()——讀取持續輸入的數據。讀取1byte的序列資料

范例:

int data = Serial.read();

Serial.flush()

清空緩沖器。 有時候因為資料速度太快,超過程式處理資料的速度,你可以使用此函式清除緩沖區內的資料。經過此函式可以確保緩沖區(buffer)內的資料都是最新的。

范例:

Serial.flush();

Serial.print(data)

從串行端口輸出數據。Serial.print(數據)默認為十進制等於Serial.print(數據,DEC)。

Serial.print(data, encoding)

經序列埠傳送資料,提供編碼方式的選項。Serial.print(數據,數據的進制)如果沒有指定,預設以一般文字傳送。

范例:

Serial.print(75);  // 列印出 "75"

Serial.print(75, DEC); //列印出 "75"

Serial.print(75, HEX); // "4B" (75 的十六進位)

Serial.print(75, OCT); // "113" (75 in的八進位)

Serial.print(75, BIN); // "1001011" (75的二進位)

Serial.print(75, BYTE); // "K" (以byte進行傳送,顯示以ASCII編碼方式)

Serial.println(data)

從串行端口輸出數據,跟隨一個回車和一個換行符。這個函數所取得的值與 Serial.print()一樣。

Serial.println(data, encoding)

與Serial.print()相同,但會在資料尾端加上換行字元( )。意思如同你在鍵盤上打了一些資料后按下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 "

以上幾個函數是常用基本函數,還有很多以后會慢慢學習

Arduino語言庫文件

官方庫文件

· EEPROM - EEPROM讀寫程序庫

· Ethernet - 以太網控制器程序庫

· LiquidCrystal - LCD控制程序庫

· Servo - 舵機控制程序庫

· SoftwareSerial - 任何數字IO口模擬串口程序庫

· Stepper - 步進電機控制程序庫

· Wire - TWI/I2C總線程序庫

· Matrix - LED矩陣控制程序庫

· Sprite - LED矩陣圖象處理控制程序庫

非官方庫文件

· DateTime - a library for keeping track of the current date and time in software.

· Debounce - for reading noisy digital inputs (e.g. from buttons)

· Firmata - for communicating with applications on the computer using a standard serial protocol.

· GLCD - graphics routines for LCD based on the KS0108 or equivalent chipset.

· LCD - control LCDs (using 8 data lines)

· LCD 4 Bit - control LCDs (using 4 data lines)

· LedControl - for controlling LED matrices or seven-segment displays with a MAX7221 or MAX7219.

· LedControl - an alternative to the Matrix library for driving multiple LEDs with Maxim chips.

· Messenger - for processing text-based messages from the computer

· Metro - help you time actions at regular intervals

· MsTimer2 - uses the timer 2 interrupt to trigger an action every N milliseconds.

· OneWire - control devices (from Dallas Semiconductor) that use the One Wire protocol.

· PS2Keyboard - read characters from a PS2 keyboard.

· Servo - provides software support for Servo motors on any pins.

· Servotimer1 - provides hardware support for Servo motors on pins 9 and 10

· Simple Message System - send messages between Arduino and the computer

· SSerial2Mobile - send text messages or emails using a cell phone (via AT commands over software serial)

· TextString - handle strings

· TLC5940 - 16 channel 12 bit PWM controller.

· X10 - Sending X10 signals over AC power lines

/****************************************/

Arduuino復合運算符

+= , -= , *= , /=
對一個變量和另一個參數或變量完成一個數學運算。+=(以及其他)可以縮短語法長度。

Syntax語法
x += y;    // 等價於 x = x + y;
x -= y;  // 等價於 x = x - y;
x *= y;  // 等價於 x = x * y;
x /= y;  // 等價於 x = x / y;

Parameters參數
x:任何變量類型
y:任何變量類型或常數

Examples范例
x = 2;
x += 4;  // x現在為6
x -= 3;  // x現在為3
x *= 10;  // x現在為30
x /= 2;  // x現在為15

Syntax語法
x++; // increment x by one and returns the old value of x
// 將x的值加1並返回原來的x的值。  ++x; // increment x by one and returns the new value of x  // 將x的值加1並返回現在的x的值。
x-- ;  // decrement x by one and returns the old value of x  // 將x的值減1並返回原來的x的值。
--x ;  // decrement x by one and returns the new value of x  // 將x的值減1並返回現在的x的值。

Parameters參數
x: an integer or long (possibly unsigned)
x:一個整數或長整數(可以無符號)

Returns返回
The original or newly incremented / decremented value of the variable.
返回變量原始值或增加/消耗后的新值。

Examples范例
x = 2;
y = ++x;  // x now contains 3, y contains 3  // x現在為3,y為3
y = x--;  // x contains 2 again, y still contains 3  // x現在仍然為2,y將為3

Arduuino常見語法

常量:

· HIGH | LOW 表示數字IO口的電平,HIGH 表示高電平(1),LOW 表示低電平(0)。

· INPUT | OUTPUT 表示數字IO口的方向,INPUT 表示輸入(高阻態),OUTPUT 表示輸出(AVR能提供5V電壓 40mA電流)。

· true | false true 表示真(1),false表示假(0)。

結構

· void setup()   初始化變量,管腳模式,調用庫函數等

· void loop()  連續執行函數內的語句

數字 I/O

· pinMode(pin, mode)    數字IO口輸入輸出模式定義函數,pin表示為0~13, mode表示為INPUT或OUTPUT。

· digitalWrite(pin, value)    數字IO口輸出電平定義函數,pin表示為0~13,value表示為HIGH或LOW。比如定義HIGH可以驅動LED。

· int digitalRead(pin)    數字IO口讀輸入電平函數,pin表示為0~13,value表示為HIGH或LOW。比如可以讀數字傳感器。

模擬 I/O

· int analogRead(pin)    模擬IO口讀函數,pin表示為0~5(Arduino Diecimila為0~5,Arduino nano為0~7)。比如可以讀模擬傳感器(10位AD,0~5V表示為0~1023)。

· analogWrite(pin, value) - PWM 數字IO口PWM輸出函數,Arduino數字IO口標注了PWM的IO口可使用該函數,pin表示3, 5, 6, 9, 10, 11,value表示為0~255。比如可用於電機PWM調速或音樂播放。

擴展 I/O

· shiftOut(dataPin, clockPin, bitOrder, value)    SPI外部IO擴展函數,通常使用帶SPI接口的74HC595做8個IO擴展,dataPin為數據口,clockPin為時鍾口,bitOrder為數據傳輸方向(MSBFIRST高位在前,LSBFIRST低位在前),value表示所要傳送的數據(0~255),另外還需要一個IO口做74HC595的使能控制。

· unsigned long pulseIn(pin, value)    脈沖長度記錄函數,返回時間參數(us),pin表示為0~13,value為HIGH或LOW。比如value為HIGH,那么當pin輸入為高電平時,開始計時,當pin輸入為低電平時,停止計時,然后返回該時間。

時間函數

· unsigned long millis()   返回時間函數(單位ms),該函數是指,當程序運行就開始計時並返回記錄的參數,該參數溢出大概需要50天時間。

· delay(ms)    延時函數(單位ms)。

· delayMicroseconds(us)    延時函數(單位us)。

數學函數

· min(x, y)  求最小值

· max(x, y)  求最大值

· abs(x)   計算絕對值

· constrain(x, a, b)  約束函數,下限a,上限b,x必須在ab之間才能返回。

· map(value, fromLow, fromHigh, toLow, toHigh)    約束函數,value必須在fromLow與toLow之間和fromHigh與toHigh之間。

· pow(base, exponent)  開方函數,base的exponent次方。

· sq(x)     平方

· sqrt(x)   開根號

三角函數

· sin(rad)

· cos(rad)

· tan(rad)

隨機數函數

· randomSeed(seed)   隨機數端口定義函數,seed表示讀模擬口analogRead(pin)函數 。

· long random(max)   隨機數函數,返回數據大於等於0,小於max。

· long random(min, max)   隨機數函數,返回數據大於等於min,小於max。

外部中斷函數

· attachInterrupt(interrupt, , mode)     外部中斷只能用到數字IO口2和3,interrupt表示中斷口初始0或1,表示一個功能函數,mode:LOW低電平中斷,CHANGE有變化就中斷,RISING上升沿中斷,FALLING 下降沿中斷。

· detachInterrupt(interrupt)    中斷開關,interrupt=1 開,interrupt=0 關。

中斷使能函數

· interrupts()  使能中斷

· noInterrupts()  禁止中斷

串口收發函數

· Serial.begin(speed)  串口定義波特率函數,speed表示波特率,如9600,19200等。

· int Serial.available()  判斷緩沖器狀態。

· int Serial.read()   讀串口並返回收到參數。

· Serial.flush()    清空緩沖器。

· Serial.print(data)  串口輸出數據。

· Serial.println(data)   串口輸出數據並帶回車符。

/************Arduino語言庫文件*************/

官方庫文件

· EEPROM - EEPROM讀寫程序庫

· Ethernet - 以太網控制器程序庫

· LiquidCrystal - LCD控制程序庫

· Servo - 舵機控制程序庫

· SoftwareSerial - 任何數字IO口模擬串口程序庫

· Stepper - 步進電機控制程序庫

· Wire - TWI/I2C總線程序庫

· Matrix - LED矩陣控制程序庫

· Sprite - LED矩陣圖象處理控制程序庫

非官方庫文件

· DateTime - a library for keeping track of the current date and time in software.

· Debounce - for reading noisy digital inputs (e.g. from buttons)

· Firmata - for communicating with applications on the computer using a standard serial protocol.

· GLCD - graphics routines for LCD based on the KS0108 or equivalent chipset.

· LCD - control LCDs (using 8 data lines)

· LCD 4 Bit - control LCDs (using 4 data lines)

· LedControl - for controlling LED matrices or seven-segment displays with a MAX7221 or MAX7219.

· LedControl - an alternative to the Matrix library for driving multiple LEDs with Maxim chips.

· Messenger - for processing text-based messages from the computer

· Metro - help you time actions at regular intervals

· MsTimer2 - uses the timer 2 interrupt to trigger an action every N milliseconds.

· OneWire - control devices (from Dallas Semiconductor) that use the One Wire protocol.

· PS2Keyboard - read characters from a PS2 keyboard.

· Servo - provides software support for Servo motors on any pins.

· Servotimer1 - provides hardware support for Servo motors on pins 9 and 10

· Simple Message System - send messages between Arduino and the computer

· SSerial2Mobile - send text messages or emails using a cell phone (via AT commands over software serial)

· TextString - handle strings

· TLC5940 - 16 channel 12 bit PWM controller.

· X10 - Sending X10 signals over AC power lines

/****************************************/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM