この記事では、Arduinoで文字列をカンマなどの区切り文字で分割する方法をソースコード付きで解説します。
文字列を区切り文字で分割
Arduinoには、文字列を区切り文字で分割するsplit関数がありませんので、自分で関数を書く必要があります。
ソースコード
サンプルプログラムのソースコードです。
実行結果
サンプルプログラムの実行結果です。
【シリアルモニターの表示】
on off on
404 NOT FOUND | IoT入門速報
この記事では、Arduinoで文字列をカンマなどの区切り文字で分割する方法をソースコード付きで解説します。
Arduinoには、文字列を区切り文字で分割するsplit関数がありませんので、自分で関数を書く必要があります。
サンプルプログラムのソースコードです。
サンプルプログラムの実行結果です。
【シリアルモニターの表示】
on off on
コメント
サンプルでは、setup()内で1回のみの実行ですが、
loop()内で、cmdが更新される度に実行させています。
cmdsに出力される値が、過去のcmdの値を引きずる症状が出ますが、
どうしたら良いでしょうか。
void loop(){
//cmd更新処理
// 分割数 = 分割処理(文字列, 区切り文字, 配列)
int index = split(cmd, ‘,’, cmds);
// 結果表示
for(int i = 0; i < index; i++){
Serial.println(cmds[i]);
}
解決済みかもしれませんけど一応。
サンプルプログラムの13行目
else dst[index] += tmp;
を
else dst[index] = tmp;
にすることで値の追加ではなく値の上書きになるのでこの症状は解消されると思います。
Arduino初心者ですが、20行目のデータ数を
String cmd = “off,on,off,on,off,on,off”と7つにすると分割されません。6つまでは問題なく分割されるのですが。1行目のcmds[10]にしてますがだめです。ArduinoNANOで行ってます。