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つの整数変数 a
と b
を定義し、それらを add()
関数内に渡して合計を求め、結果を返し、c
変数内に保存しました。 この例では、元の変数を変更していません。 別の関数内でそれらの値を使用しているだけです。