Bye Bye Moore

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

Arduinoでゼロ埋めや右詰めした文字列を関数に渡したいなら、諦めてsprintf

shuzo-kino.hateblo.jp
の続きみたいな話です。

sprintfはCの標準ライブラリにあるデータ列を生成する関数です。
こいつを使って文字列をつくり、それをシリアルに繋ぐ方向で実装します。

実際のところ

void setup() {
  // put your setup code here, to run once:
   Serial.begin(19200);
   while (Serial.available()) { ; } 
  

  //まずは何も考えずに
  Serial.println(B0001);

  //駄目元で型キャストだ!
  Serial.println(String(B0001));

  //当然動かないので、sprintfをつかおう
  char sendPacket[24] = "";
  sprintf(sendPacket, "%04d", B0001);
  Serial.println(sendPacket); 
}

まぁ、当然というか結果はこうなります。

1
1
0001