<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> Arduino >> 瀏覽文章

        Arduino基礎-函數 (范例)

        作者:huqin   來源:本站原創   點擊數:  更新時間:2014年04月03日   【字體:

        輸入輸出函數
        Arduino 內含了一些處理輸出與輸入的切換功能,相信已經從書中程式范例略知一二。

        pinMode(pin, mode)

        將數位腳位(digital pin)指定為輸入或輸出。

        范例 :

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

        digitalWrite(pin, value)

        將數位腳位指定為開或關。腳位必須先透過pinMode明示為輸入或輸出模式digitalWrite才能生效。

        范例 :

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

        int digitalRead(pin)

        將輸入腳位的值讀出,當感測到腳位處于高電位時時回傳HIGH,否則回傳LOW。

        范例 :

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

        int analogRead(pin)

        讀出類比腳位的電壓并回傳一個 0到1023 的數值表示相對應的0到5的電壓值。

        范例 :

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

        analogWrite(pin, value)

        改變PWM腳位的輸出電壓值,腳位通常會在3、5、6、9、10與11。Value變數范圍0-255,例如:輸出電壓2.5伏特(V),該值大約是128。

        范例 :

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

        unsigned long pulseIn(pin, value)

        設定讀取腳位狀態的持續時間,例如使用紅外線、加速度感測器測得某一項數值時,在時間單位內不會改變狀態。

        范例 :

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

        shiftOut(dataPin, clockPin, bitOrder, value)

        把資料傳給用來延伸數位輸出的暫存器,函式使用一個腳位表示資料、一個腳位表示時脈。bitOrder用來表示位元間移動的方式(LSBFIRST最低有效位元或是MSBFIRST最高有效位元),最后value會以byte形式輸出。此函式通常使用在延伸數位的輸出。

        范例 :

        shiftOut(dataPin, clockPin, LSBFIRST, 255);

        時間函數
        控制與計算晶片執行期間的時間


        unsigned long millis()

        回傳晶片開始執行到目前的毫秒

        范例:

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

        delay(ms)

        暫停晶片執行多少毫秒

        范例:

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


        delay Microseconds(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)

        判斷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與fromHigh范圍,對等轉換至toLow與toHigh范圍。時常使用于讀取類比訊號,轉換至程式所需要的范圍值。


        例如:

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


        double pow(base, exponent)

        回傳一個數(base)的指數(exponent)值。

        范例:

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


        double sqrt(x)

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

        范例:

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


        double sin(rad)

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

        范例:

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


        double cos(rad)

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

        范例:

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


        double tan(rad)

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

        范例:

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


        亂數函式
        產生亂數


        randomSeed(seed)

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

        范例:

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


        long random(max)

        long random(min, max)

        回傳指定區間的亂數,型態為long。如果沒有指定最小值,預設為0。


        范例:

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

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

        序列通訊
        你可以在第五章看見一些使用序列埠與電腦交換訊息的范例,以下是函式解釋。


        Serial.begin(speed)

        你可以指定Arduino從電腦交換訊息的速率,通常我們使用9600 bps。當然也可以使用其他的速度,但是通常不會超過115,200 bps(每秒位元組)。


        范例:

        Serial.begin(9600);


        Serial.print(data)

        Serial.print(data, encoding)

        經序列埠傳送資料,提供編碼方式的選項。如果沒有指定,預設以一般文字傳送。


        范例:

        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.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 "

        int Serial.available()

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

        范例:

        int count = Serial.available();


        int Serial.read()

        讀取1byte的序列資料

        范例:

        int data = Serial.read();


        Serial.flush()

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

        范例:

        Serial.flush();

        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮