Arduino でグローバル変数を定義する

Ammar Ali 2023年10月12日
Arduino でグローバル変数を定義する

このチュートリアルでは、変数を他のすべての関数の先頭で初期化することにより、Arduino で変数をグローバルとして定義する方法について説明します。

Arduino でグローバル変数を定義する

Arduino では、さまざまな種類の変数を定義できます。 グローバル変数は、コード内の任意の関数内でアクセスできる変数です。

関数内で変数を定義すると、その変数はその関数のスコープ内でのみ使用されます。 別の関数内で使用しようとすると、Arduino は変数がこのスコープで定義されていないというエラーを出します。

関数の外側で、Arduino コード内に存在するすべての関数の先頭に変数を定義すると、それは任意の関数内でアクセスできるグローバル変数になります。 グローバル変数が定数として定義されていない場合、関数内の任意のポイントでその値を変更することもできます。

たとえば、グローバル変数を定義し、setup() 関数内でその値を変更してみましょう。

コード例:

int global = 10;
void setup() {
  global = 20;
  Serial.begin(9600);
  Serial.println(global);
}

void loop() {}

出力:

20

上記のコード例では、変数 global を定義し、値 10 で初期化しました。 Arduino のシリアル モニタを使用して、シリアル モニタ ウィンドウに値を表示しました。

Serial.begin() 関数は、指定された baud レートまたは速度でシリアル モニターを初期化しました。 Serial.println() 関数は、指定された値をシリアル モニター ウィンドウに出力するために使用されます。

setup() 関数の下で変数を定義するとします。 その場合、setup() 関数内では使用できませんが、loop() 関数内または global 変数の下で定義されたその他の関数内では使用できます。

グローバル変数は任意の関数のスコープから変更できるため、注意して使用してください。

グローバル変数を定義したくないが、関数内で宣言して他の関数内で使用したい場合は、変数を入力引数としてその関数に渡すことができます。

たとえば、setup() 関数内で 2つの変数を定義し、それらを別の関数内に追加し、結果を setup() 関数に返し、シリアル モニターに出力します。

コード例:

void setup() {
  int a = 10;
  int b = 20;
  int c = add(a, b);
  Serial.begin(9600);
  Serial.println(c);
}

void loop() {}

int add(int aa, int bb) {
  int result = aa + bb;
  return result;
}

出力:

30

上記のコードでは、2つの整数変数 ab を定義し、それらを add() 関数内に渡して合計を求め、結果を返し、c 変数内に保存しました。 この例では、元の変数を変更していません。 別の関数内でそれらの値を使用しているだけです。

著者: 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