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から始まる事に注意してください。
Sponsored Link