Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

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