日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Arduino 常用函数参考文档

發布時間:2024/3/12 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Arduino 常用函数参考文档 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Arduino 常用函數參考文檔

  • 一、程序結構
  • 二、數字輸入輸出
  • 三、模擬輸入輸出
  • 四、模擬輸入輸出

一、程序結構

1.setup():

Arduino控制器通電或復位后,即會開始執行setup() 函數中的程序,該部分只會執行一次。 通常我們會在setup() 函數中完成Arduino的初始化設置,如配置I/O口狀態,初始化串口等操作。

eg.示例程序

// 給13號引腳連接的設備設置一個別名“led” ;// 在板子啟動或者復位重啟后, setup部分的程序只會運行一次 void setup(){// 將“led”引腳設置為輸出狀態pinMode(led, OUTPUT); }// setup部分程序運行完后,loop部分的程序會不斷重復運行 void loop() {digitalWrite(led, HIGH); // 點亮LEDdelay(); // 等待一秒鐘digitalWrite(led, LOW); // 通過將引腳電平拉低,關閉LEDdelay(); // 等待一秒鐘 }

2.loop():

在setup() 函數中的程序執行完后,Arduino會接著執行loop() 函數中的程序。而loop()函數是一個死循環,其中的程序會不斷的重復運行。 通常我們會在loop() 函數中完成程序的主要功能,如驅動各種模塊,采集數據等。

eg.示例程序

// 給13號引腳連接的設備設置一個別名“led” ;// 在板子啟動或者復位重啟后, setup部分的程序只會運行一次 void setup(){// 將“led”引腳設置為輸出狀態pinMode(led, OUTPUT); }// setup部分程序運行完后,loop部分的程序會不斷重復運行 void loop() {digitalWrite(led, HIGH); // 點亮LEDdelay(); // 等待一秒鐘digitalWrite(led, LOW); // 通過將引腳電平拉低,關閉LEDdelay(); // 等待一秒鐘 }

3.main():

在進行Arduino開發時,沒有像傳統C/C++程序使用入口函數main。實際上main函數存在于Arduino核心庫中,且仍然是程序的入口。 在Arduino核心庫中可見main.cpp文件,其內容如下: #include <Arduino.h>// Declared weak in Arduino.h to allow user redefinitions. ; }// Weak empty variant initialization function. // May be redefined by variant files. void initVariant() __attribute__((weak)); void initVariant() { }void setupUSB() __attribute__((weak)); void setupUSB() { }int main(void) {init();initVariant();#if defined(USBCON)USBDevice.attach(); #endifsetup();for (;;) {loop();if (serialEventRun) serialEventRun();}; }

通過以上程序可見,Arduino程序中編寫的setup和loop函數,都在main函數中調用了。
loop的循環執行,是通過for循環實現的,且每次loop結束后,都會進行串口事件判斷,也正是因為這種設計,串口事件不能實時響應。

二、數字輸入輸出

1.pinMode ( pin , mode ) :

在使用輸入或輸出功能前,你需要先通過pinMode() 函數配置引腳的模式為輸入模式或輸出模式。

參數:
1、參數pin為指定配置的引腳編號
2、參數mode為指定的配置模式
3、通常可用模式有三種:
4、INPUT 輸入模式
5、OUTPUT 輸出模式
6、INPUT_PULLUP 輸入上拉模式
  eg.示例程序

/*Blink 等待一秒鐘,點亮LED,再等待一秒鐘,熄滅LED,如此循環 */// 在大多數Arduino控制板上 13號引腳都連接了一個標有“L”的LED燈 // 給13號引腳連接的設備設置一個別名“led” int led = 13;// 在板子啟動或者復位重啟后, setup部分的程序只會運行一次 void setup(){// 將“led”引腳設置為輸出狀態pinMode(led, OUTPUT); }// setup部分程序運行完后,loop部分的程序會不斷重復運行 void loop() {digitalWrite(led, HIGH); // 點亮LEDdelay(1000); // 等待一秒鐘digitalWrite(led, LOW); // 通過將引腳電平拉低,關閉LEDdelay(1000); // 等待一秒鐘 }

2.digitalWrite ( pin , value ) :

①之前我們在Blink程序中使用到了pinMode(, OUTPUT),即是把13號引腳配置為輸出模式。
②配置成輸出模式后,你還需要使用digitalWrite() 讓其輸出高電平或者是低電平。
參數: 
①、參數pin為指定輸出的引腳編號;
②、參數value為你要指定輸出的電平
③、使用HIGH指定輸出高電平,或是使用LOW指定輸出低電平。
  eg.示例程序

/*Blink 等待一秒鐘,點亮LED,再等待一秒鐘,熄滅LED,如此循環 */// 在大多數Arduino控制板上 13號引腳都連接了一個標有“L”的LED燈 // 給13號引腳連接的設備設置一個別名“led” int led = 13;// 在板子啟動或者復位重啟后, setup部分的程序只會運行一次 void setup(){// 將“led”引腳設置為輸出狀態pinMode(led, OUTPUT); }// setup部分程序運行完后,loop部分的程序會不斷重復運行 void loop() {digitalWrite(led, HIGH); // 點亮LEDdelay(1000); // 等待一秒鐘digitalWrite(led, LOW); // 通過將引腳電平拉低,關閉LEDdelay(1000); // 等待一秒鐘 }

Arduino中輸出的低電平為0V,輸出的高電平為當前Arduino的工作電壓。
例如Arduino UNO的工作電壓為5V,其高電平輸出也是5V;Arduino Uno工作電壓為3.3V,所以高電平輸出也就是3.3V。
3、digitalRead ( pin ) :
在使用輸入或輸出功能前,你需要先通過pinMode() 函數配置引腳的模式為輸入模式或輸出模式。
參數: 參數pin為指定讀取狀態的引腳編號。
返回值: 返回值為獲取到的信號狀態,1為高電平,0為低電平。
 eg.示例程序

/*通過2號引腳連接的按鍵,控制13號引腳連接的LED*/// 設置各引腳別名; // 連接按鍵的引腳; // 連接LED的引腳// 變量定義; // 存儲按鍵狀態的變量void setup() {// 初始化LED引腳為輸出狀態pinMode(ledPin, OUTPUT);// 初始化按鍵引腳為輸入狀態pinMode(buttonPin, INPUT);}void loop(){// 讀取按鍵狀態并存儲在變量中buttonState = digitalRead(buttonPin);// 檢查按鍵是否被按下// 如果按鍵按下,那buttonState應該為高電平if (buttonState == HIGH) {// 點亮LEDdigitalWrite(ledPin, HIGH);}else {// 熄滅LEDdigitalWrite(ledPin, LOW);}}

三、模擬輸入輸出

1.analogRead ( pin ) :
① 模擬輸入引腳是帶有ADC(Analog-to-Digital Converter,模數轉換器)功能的引腳。
②它可以將外部輸入的模擬信號轉換為芯片運算時可以識別的數字信號,從而實現讀入模擬值的功能。
③模擬輸入功能需要使用analogRead() 函數。
參數: 參數pin是指定要讀取模擬值的引腳,被指定的引腳必須是模擬輸入引腳。如analogRead(A0),即是讀取A0引腳上的模擬值。
返回值: Arduino Uno模擬輸入功能有10位精度,即可以將0~5V的電壓信號轉換為0~1023的整數形式表示。
 eg.示例程序

/* 光敏電阻檢測環境光 http://www.arduino.cn/ */void setup() {// 初始化串口Serial.begin(); } void loop() { // 讀出當前光線強度,并輸出到串口顯示int sensorValue = analogRead(A0);Serial.println(sensorValue);delay(); }

2.analogWrite ( pin , value ) :
①使用analogWrite() 函數實現PWM輸出功能。
②在Arduino Uno中,提供PWM功能的引腳為3、5、6、9、10、11。
③在analogWrite() 和analogRead() 函數內部,已經完成了引腳的初始化,因此不用在Setup() 函數中進行初始化操作。
參數: 參數pin是指定要輸出PWM波的引腳;參數value指定是PWM的脈沖寬度,范圍為0~255。
返回值: Arduino Uno模擬輸入功能有10位精度,即可以將0~5V的電壓信號轉換為0~1023的整數形式表示。
 eg.示例程序
 /*
Fading
通過analogWrite() 函數實現呼吸燈效果
*/

; // LED連接在9號引腳上

void setup() {
// Setup部分不進行任何處理
}

void loop() {
// 從暗到亮,以每次加5的形式逐漸亮起來
; fadeValue <= ; fadeValue +=) {
// 輸出PWM
analogWrite(ledPin, fadeValue);
// 等待30ms,以便觀察到漸變效果
delay();
}

// 從亮到暗,以每次減5的形式逐漸暗下來
; fadeValue >= ; fadeValue -=) {
// 輸出PWM
analogWrite(ledPin, fadeValue);
// 等待30ms,以便觀察到漸變效果
delay();
}
}

四、模擬輸入輸出

1.調聲函數

1)tone ( ) :

可以讓指定引腳產生一個占空比為50%的指定頻率的方波。

語法:

tone(pin, frequency) tone(pin, frequency, duration)

返回值:

Arduino Uno模擬輸入功能有10位精度,即可以將0~5V的電壓信號轉換為0~1023的整數形式表示。

2)no Tone ( pin ):

停止指定引腳上的方波輸出。

語法:

noTone(pin)

參數:

pin : 余姚停止方波輸出的引腳

eg.示例程序

/* MelodyPlays a melody This example code is in the public domain. http://arduino.cc/en/Tutorial/Tone */#include "pitches.h"// 記錄曲子的音符 int melody[] = {NOTE_C4, NOTE_G3,NOTE_G3, NOTE_A3, NOTE_G3,, NOTE_B3, NOTE_C4};// 音符持續時間 4為四分音符, 8為八分音符 int noteDurations[] = {, , , ,,,, };void setup() {// 遍歷整個曲子的音符; thisNote < ; thisNote++) {// noteDurations[]數組中存儲的是音符的類型 // 我們需要將其換算為音符持續時間,方法如下:// 音符持續時間=1000ms / 音符類型// 例如,四分音符=1000 / 4,8分音符 = 1000/8/noteDurations[thisNote];tone(, melody[thisNote],noteDuration);// 為了能辨別出不同的音調,你需要在兩個音調間設置一定的延時// 增加30%延時時間是比較合適的int pauseBetweenNotes = noteDuration * 1.30;delay(pauseBetweenNotes);// 停止發聲noTone();} }void loop() {// 程序并不重復,因此這里為空 }

2.pulisein() :
檢測指定引腳上的脈沖信號寬度。

例如當要檢查高電平脈沖時,pulseln()會等待指定引腳輸入的電平變高,當變高后開始記時,知道輸入電平變低,停止計時。

pulseln()函數會返回這個脈沖信號的持續時間,即這個脈沖的寬度。

函數還可以設定超時時間,如果超時設定時間,仍未檢測到脈沖,則會退出pulseln()函數并返回0.

當沒有設定超時時間時,pulseln()會默認1秒鐘的超時時間。

語法:

1)pulseln ( pin , value )

2)pulsein ( pin , value , timeout )

參數:

pin : 需要讀取脈沖的引腳

value :需要讀取的脈沖類型, HIGH OR LOW

timeout :超時時間 ,單位微秒 ,數據類型為無符號長整型。

返回值:

返回脈沖寬度 , 單位微秒 ,數據類型為無符號長整型 。 如果在指定時間內沒有檢測到脈沖,則返回0 .
    eg.示例程序

/* SR04超聲波傳感器驅動 串口顯示檢測距離 */// 設定SR04連接的Arduino引腳 ; ; float distance; void setup() { // 初始化串口通信及連接SR04的引腳Serial.begin();pinMode(TrigPin, OUTPUT);// 要檢測引腳上輸入的脈沖寬度,需要先設置為輸入狀態pinMode(EchoPin, INPUT);Serial.println("Ultrasonic sensor:"); } void loop() {// 產生一個10us的高脈沖去觸發TrigPindigitalWrite(TrigPin, LOW);delayMicroseconds();digitalWrite(TrigPin, HIGH);delayMicroseconds();digitalWrite(TrigPin, LOW);// 檢測脈沖寬度,并計算出距離distance = pulseIn(EchoPin, HIGH)/ 58.00;Serial.print(distance);Serial.print("cm");Serial.println();delay(); }

3.外部中斷
  影響中斷的處理程序——中斷函數,當中斷觸發后,Arduino便會進行這個函數。

該函數不能帶任何參數,且返回類型為空。如:

void Hello () {flag = ture ; }

1)attachlneterrupt ( pin , ISR , mode )

對中斷引腳進行初始化設置,以開啟Arduino的外部中斷功能

示例:

attachinterrupt ( 2 , Hello , LOW ) ;該語句會開啟Arduino Uno 的 2 號引腳(中斷編號0)的外部中斷功能,并指定下降沿時觸發該中斷。

當2號引腳上電平由高變低后,該中斷會被觸發,Arduino即會運行Hello ()函數中的語句。

2) detachlnterrupt ( pin )

如果你不需要使用外部中斷了,你可以用中斷分離函數detachlnterrupt()來關閉中斷功能。

參數: pin : 需要禁用中斷的引腳。

示例: detachlnterrupt( 2 )

eg.示例程序

/* Arduino外部中斷的使用 外部中斷觸發警報聲 */// 默認無遮擋,蜂鳴器發聲 volatile boolean RunBuzzer = true;void setup() {Serial.begin();// 初始化外部中斷// 當2號引腳輸入的電平由高變低時,觸發中斷函數warningattachInterrupt(, warning, CHANGE); }void loop() {if(RunBuzzer){tone(,);}else{noTone();} }// 中斷函數 void warning () {RunBuzzer=!RunBuzzer; }

轉載:https://www.bbsmax.com/A/VGzlae21Jb/

總結

以上是生活随笔為你收集整理的Arduino 常用函数参考文档的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。