Arduino 中的子程式

Ammar Ali 2023年10月12日
Arduino 中的子程式

本教程將討論通過宣告函式並在 Arduino 的主程式碼中呼叫它們來處理子程式。

Arduino 中的子程式

在 Arduino 中,我們可以宣告函式並在主程式碼中呼叫它們來處理子程式。程式碼是逐行執行的,如果我們在一行中呼叫一個函式,Arduino 將在該行停止並移動到該函式的宣告處。

它將執行函式中存在的程式碼,然後移動到主程式碼中的下一行。

例子:

void setup() {}
void loop() {
  // code
  Sub_1();
  // code
}
void Sub_1() {
  // code
}

當上述程式碼中的 Sub_1() 函式行執行時,編譯器將移動到 Sub_1() 函式宣告並執行其程式碼。

它將返回主程式碼並移至下一行。我們可以宣告有或沒有返回型別的函式。

在上面的程式碼中,我們使用了 void 關鍵字,這意味著函式不會返回任何內容,但我們可以更改函式中全域性變數的值。

在開始時定義且未被任何函式包圍的變數稱為全域性變數。

讓我們定義一個全域性變數並使用子程式更改其值。請參閱下面的程式碼。

int a = 5;
void setup() {}
void loop() {
  // code
  Sub_1();
  // code
}
void Sub_1() { a = 10; }

在上面的程式碼中,全域性變數 a 的值將在子程式 Sub_1() 執行後改變。我們可以在子例程之前和之後列印變數的值來檢查它是否工作。

我們還可以定義具有返回型別的函式,當它們被呼叫時將返回一個值。

要定義具有資料型別的函式,我們必須首先在函式內部寫入資料型別、函式名稱和要傳遞的引數。

例如,讓我們定義一個函式來查詢兩個整數的和並將結果作為整數返回。

void setup() {}
void loop() {
  int a = 5;
  int b = 5;
  int c;
  c = Sub_1(a, b);
  // code
}
int Sub_1(int x, int y) {
  int result = x + y;
  return result;
}

在上面的程式碼中,當使用特定輸入呼叫函式 Sub_1() 時,它將返回兩個輸入的總和。

請注意,我們在 Sub_1() 函式中傳遞的變數與我們在 Sub_1() 宣告中使用的變數不同。不過,我們可以使用相同的變數,因為它們不是全域性的。

函式內部定義的變數只能在該函式內部使用和更改。我們可以使用 return 關鍵字來返回一個值或一個變數。

我們還可以使用其他資料型別來定義字串、char 和 long 等函式。如果我們不想返回任何值或變數,我們可以使用 void 關鍵字來定義函式。

當我們想要編寫乾淨的程式碼或在程式碼中多次重複任務時,子例程很有幫助。

如果我們想在一個程式碼中多次執行一項任務,我們必須多次編寫程式碼,但是我們可以建立一個函式並將程式碼放入其中,並在主程式碼中隨時呼叫它。

它將減少時間和空間,並使程式碼簡潔明瞭。

作者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook