Arduino的基本函數


Arduino提供了大量的基礎函數,包括I/O控制時間函數中斷函數、數學函數、串口通信函數等,這些基礎函數使單片機系統開發不再有複雜的底層代碼,使用者可以很方便的對板子上的資源進行控制。另外,Arduino還提供了許多關於這些基礎函數的應用實例,這些例子程序可以在Arduino開發環境的Files-Examples中找到,從而大大降低了初學者的學習難度,縮短了單片機系統開發週期。


數字I/O口的操作

1、pinMode(pin,mode)函數

pinMode函數用於配置引腳爲輸入或者輸出模式,它是一個無返回值的函數,一般放在setup()函數體重,先設置再使用。

pinMode函數由兩個參數--pin 和 mode,pin參數表示要配置的引腳代號,以Arduino Uno爲例,它的取值範圍是0~13,也可以把模擬引腳(A0~A5)作爲數字引腳使用,此時編號爲14腳到19腳。mode參數表示設置的模式——INPUT輸入模式或者OUTPUT輸出模式,其中INPUT用於讀取信號,OUTPUT用於輸出控制信號。

配置數字引腳3位輸出模式的語句如下所示:

pinMode(3,OUTPUT);

2、digitalWrite(pin,value)

digitalWrite函數的作用是設置引腳的輸出電壓爲高電平或低電平,也是一個無返回值的函數,在使用該函數設置引腳之前,需要先用pinMode()函數交引腳設置爲OUTPUT模式,因爲數字口具有輸入或輸出兩種狀態,需要預先定義。

digitalWrite函數有兩個參數---pin 和 value, pin 代表引腳,value代表輸出的電平——HIGH(高電平)或LOW(低電平)。

配置數字引腳2的輸出電平爲高:

pinMode(2,OUTPUT);
digitalWrite(2,HIGH);

3、digitaRead(pin)

digitalRead函數的作用是獲取引腳的電平情況,該函數返回值爲int型———HIGH(高電平)或者LOW(低電平),在使用該函數時需要預先定義管腳INPUTmode。

digitalRead函數只有一個參數——pin,他表示所要獲取的電壓情況的引腳號,如果引腳沒有連接到任何地方,那麼將隨機返回HIGH或者LOW。

獲取4號管腳的電壓情況語句:

pinMode(4,INPUT);
digitalRead(4);

模擬I/O接口的操作函數

1、analogReference(type)

analogReference函數的作用是配置模擬輸入引腳的基準電壓(即輸入範圍的最大值),它是一個無返回值的函數,只有一個參數type,type的選項有DEFAULT(默認)/INTERANL(內部)/INTERNAL1V1/INTERNAL2V56/EXTERNAL,,具體含義如下:

  • DEFAULT:默認5V或者3.3V爲基準電壓。
  • INTERANL:低電壓模式,使用片內基準電壓源
  • INTERNAL1V1:低電壓模式,以1.1V爲基準電壓
  • INTERNAL2V56:低電壓模式,以2.56V爲基準電壓。
  • EXTERNAL:擴展接口,以AREF引腳(0~5V)的電壓爲基準電壓。

設置模擬輸入引腳的基準電壓默認的語句:

analogRefernece(DEFAULT);

2、analogRead(pin)

analogRead函數的作用是從指定的模擬引腳讀取模擬量,讀取週期爲100微妙,即最大讀取速度可達每秒10000次,參數pin表示讀取的模擬輸入引腳編號,返回值爲int型(範圍在0~1023)。

Arduino Uno主板有6個通道10位AD轉換器,即精度爲10位,返回值是0~1023,也就是說輸入電壓爲5V的讀取精度爲5V/1024個單位,約定於每個單位0.049V(4.9mV)。輸入範圍和進度可以通過analogReference()進行修改。

如輸入電壓爲a,那麼獲取的模擬量輸入3的電壓值爲:

int potPin = 3;
int value = 0;
void setup()
{
    Serial.begin(9600);
}
void loop()
{
    value = analogRead(potPin) *a*1000/1023;    //輸入電壓爲a
    Serial.println(value);
}

3、analogWrite(pin,value)

analogWrite函數的作用是通過PWM的方式將模擬值輸入到引腳,即調用analogWrite函數後,相應的引腳會產生一個指定佔空比的穩定方波(頻率大約爲490Hz),直到下一次調用該函數,可應用在LED亮度調節、電機調速控制等方面。

analogWrite函數是無返回值函數,有兩個參數pin和value,參數pin表示輸出PWM的引腳,這裏只能選擇函數支持的引腳,這個函數支持的引腳爲3、5、6、9、10和11,參數value表示PWM佔空比,因爲PWM輸出位數爲8,所以其範圍在0~255,對應占空比爲0~100%,帶PWM功能的引腳標有波浪線'~'。

從引腳11輸出PWM:

int sensor = A0;
int LED = 11;
int value = 0;

void setup()

{
    Serial.begin(9600);
}

void loop()
{
    value = analogRead(sensor);
    Serial.println(value,DEC);  //可以觀察讀取的模擬量的值
    analogWrite(LED,value/4);   //讀取的模擬量是0~1023*分辨率,結果除以4才能到0-255
}

注意:

引腳5和6的PWM功能輸出時將產生高於預期的佔空比,這是因爲millis()和delay()函數共用一個內部定時器,使得內部計時器在處理PWM時候分心,這種情況一般出現在低佔空比時。


時間函數

delay(ms)

delay函數是一個延時函數,它是一個無返回值函數,參數是延時的時間長度,單位是ms。

delayMicroseconds(us)

delayMicroseconds函數是一個延時函數,可以產生更短時間的延時,參數是延時的長度,單位爲微秒。


中斷函數

單片機的中斷可以描述爲:由於某一隨機事件的發生,單片機暫停在原程序的運行,轉而執行另一個程序(隨機事件),處理完畢之後又自動回到斷點處繼續執行,其中,中斷源、主程序、中斷服務程序簡述如下:

  • 中斷源:引起中斷的原因,或能夠發生中斷請求的來源。
  • 主程序:單片機現在運行的程序。
  • 中斷服務程序:處理中斷請求的程序。

interrupts()和noInterrupts()

在Arduino中,interrupts函數和noInterrupts函數分別負責打開與關閉中斷,這兩個函數均爲無返回值的函數,無參數。

attachInterrrupt(interrupt,function,mode)

該函數用於設置外部中斷,有三個參數,分別表示中斷源、中斷處理函數和觸發模式,它們的具體含義如下:

  • 中斷源:可選0、1,對應2或3號數字引腳。
  • 中斷處理函數:指定中斷的處理函數,是一段程序,當中斷髮生時執行該子程序部分,其中參數爲函數的指針。
  • 觸發模式:有四種類型-LOW(低電平觸發)、CHANGE(跳變時觸發)、RISING(上升沿觸發)、FALLING(下降沿觸發)。

detachInterrupt(interrupt)用於取消中斷。


串口通信函數

1、Serial.begin()

用於設置串口的波特率,波特率是指每秒傳輸的比特數,除以8就可以得到每秒傳輸的字節數,一般用9600、19200、57600、115200。

2、Serial.available()

用於判斷串口是否接受到數據,該函數返回值爲int型,不帶參數。

3、Serial.read()

用於將串口數據讀入,該函數返回值是int型,不帶參數。

4、Serial.print()

用於從串口輸出數據,數據可以是變量,也可以是字符串。

5、Serial.printIn()

比Serial.print()多了回車換行功能。

Serial.printIn(x,DEC);//輸出並換行

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章