Arduino入門:配列

ArduinoのSketch(スケッチ)では、C言語と同様に配列が使用できます。

配列

配列の宣言や初期化は、C言語と同様の書式で行えます。

//Arduino Sketch Example: Array
//Date: 2015.1.11
//Edited and Modified by: easy labo
//Original Source: Arduino Reference (http://arduino.cc/en/Reference/HomePage)

int valueX[5]; // (A)
int ValueY[] = {1, 3, 5, 7, 9}; // (B)
int valueZ[5] = {0, 2, 4, 6, 8}; // (C)

Creative Commons Attribution-ShareAlike 3.0 License (CC BY-SA 3.0)
Arduino Reference:Arrays” by Arduino Team, used under CC BY-SA 3.0/ easy labo made some changes and comments to the original

上の例では、次のような処理をしています。
(A) 配列数を明示して配列宣言のみ行っています。
(B) 配列数を明示せず配列宣言と初期化を同時に行っています。
(C) 配列数を明示して配列宣言と初期化を同時に行っています。

文字配列

1文字ずつを配列要素に入れて並べれば、文字列データを格納する事が出来ます。データは、文字配列要素に加えて終端文字として、’\0’が必要になりますが、次例(B)の様に記述しても、Arduinoのコンパイラが自動的に処理してくれます。

//Arduino Sketch Example: String, Array of char
//Date: 2015.1.11
//Edited and Modified by: easy labo
//Original Source: Arduino Reference (http://arduino.cc/en/Reference/HomePage)

char stringA[6]; // (A)
char stringB[6] = {'e', 'l', 'a', 'b', 'o'}; // (B)
char stringC[6] = {'e', 'l', 'a', 'b', 'o', '\0'};  // (C)
char stringD[ ] = "elabo"; // (D)
char stringE[6] = "elabo"; // (E)
char stringF[12] = "elabo"; // (F)

Creative Commons Attribution-ShareAlike 3.0 License (CC BY-SA 3.0)
Arduino Reference:String” by Arduino Team, used under CC BY-SA 3.0/ easy labo made some changes and comments to the original

Sketch(スケッチ)では、上の例の様に何通りかの宣言と初期化方法があります。
(A) 要素数を明示して文字配列宣言を行っています。
(B) 要素数を明示して文字配列宣言と初期化を行っています。
(C) 要素数を明示して文字配列宣言と初期化を行っています。終端文字あり。
(D) 要素数を明示せず文字配列宣言と初期化を行っています。
(E) 要素数を明示して文字配列宣言と初期化を行っています。
(F) 要素数を明示して文字配列宣言と初期化を行っています。

文字配列には、文字列数+1(終端文字’\0′)以上の要素数が必要ですが、(F)の様に多くても問題はありません。

なお文字と文字列は、それぞれ次の様に記述します。
文字:シングルコーテーションで、’e’の様に記述します。
文字列:ダブルコーテーションで、”elabo”の様に記述します。

文字列のポインタ配列による処理

処理する文字列の種類が多い場合、ポインタの配列を利用すると上手く処理するとが出来ます。文字配列変数の格納アドレスの配列を作成して2次元的に管理する訳です。

//Arduino Sketch Example: Array of string
//Date: 2015.1.11
//Edited and Modified by: easy labo
//Original Source: Arduino Reference (http://arduino.cc/en/Reference/HomePage)

char* sendStrings[]={
  "Line-1 is string-A",  "Line-2 is string-B",
  "Line-3 is string-C",  "Line-4 is string-D"
};

void setup(){
Serial.begin(9600);
}

void loop(){
for (int i = 0; i < 4; i++){
   Serial.println(sendStrings[i]);
   delay(200);
   }
}

Creative Commons Attribution-ShareAlike 3.0 License (CC BY-SA 3.0)
Arduino Reference:String” by Arduino Team, used under CC BY-SA 3.0/ easy labo made some changes and comments to the original

上例のcharの後についているアスタリスク(*)は、ポインタの配列宣言の場合に必要になります。この例では、4つの文字列をシリアルで出力しています。

配列要素へのアクセス

配列要素へのアクセスは、[]の中にインデックス数を入れてアクセス対象指定します。
a[i]
i=0,1,…N-1
N:配列数
インデックスが、0から始まる事に注意してください。

→その他のArduino関連情報

Sponsored Link