Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

Arduinoでsprintfを使い文字列を生成する

Arduinoで文字列を作るときはStringクラスが使えますが
速度を高速化したい、既成のsprintfを利用したC言語プロジェクトを流用したいなどのケースでは
標準でsprintf関数を利用することができます。

実際のところ

GPSと加速度を模したデータを一つの文字列として出力したい場合、以下のようにします。
要素ごとにprintfするよりは高速化できます。

void setup() {
  Serial.begin(9600);
  
  char buf[60];
  int val1 = -12;
  int val2 = 987;
  int year = 2020;
  int month = 6;
  int day = 2;
  int hour = 9;
  int minute = 30;
  int second = 8;
  long latitude    = 1111111;
  long longitude = 2222222;
  int x = 379;
  int y = 297;
  int z = 346;

  sprintf(buf, "%4d-%02d-%02dT%02d:%02d:%02dZ", year, month, day, 
                                               hour, minute, second );
  sprintf(buf, "%s,%ld,%ld", buf, latitude,longitude );
  sprintf(buf, "%s,%d,%d,%d", buf, x,y,z );
  
  Serial.println(buf);
}

void loop() {

}

参考もと

garchiving.com