PR

Arduinoで小数点を含むカンマ区切り文字の生成(sprintf、dtostrf)

記事内に広告が含まれています。

 Arduinoで通信のやり取りをしているとArduino側でカンマ区切り文字の処理を行いたくなるときがあります。

 

 少し前、Arduino側でカンマ区切り文字を分解する方法を紹介しましたが、今回はArduino側でカンマ区切り文字を生成する方法を紹介します。sprintf()関数で連結すればいいだけの話ですが、Arduinoでは浮動小数点数をsrintf()で扱うことができません。

 

 取得したセンサー情報等をArduino側から送信する際、小数点が含まれた情報をカンマ区切りで送信したいことがあります。その方法を備忘録として残しておきます。

 

▼小数点を含むカンマ区切り文字列の生成▼

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

void loop() {
  char s[7];
  char t[7];
  char buf[20];
  float val1 = -12;
  float val2 = 987.654;

  dtostrf(val1, 3, 1, s);
  dtostrf(val2, 3, 1, t);
  //Serial.println(s);
  //Serial.println(t);

  sprintf(buf, "%s,%s", s, t );
  Serial.println(buf);
}

 dtostrf()を使用すれば、小数点を含む数値の書式を整えて文字配列へ格納することが可能です。その後、sprintf()でカンマ区切りに連結すれば完了です。

 

 欲しい桁数まで小数点を右にずらして、処理側(受信側)で元に戻せば良いのですが、こういった方法があるのを知らなかったものですから・・・。

 

 

コメント

タイトルとURLをコピーしました