ホーム‎ > ‎

printfを強化

ArduinoのSerial.printfは貧弱な実装である。なぜならば1回で1つの数値か文字しか表示できないからだ。また、Serial以外のオブジェクトになった場合にHEX,DECなどの指定が出来ない。ここでは何とか工夫してprintfの強化をしてみる。
  1. itoaを使う
    itoaは数値(integer)を文字(alphabet)に変換する。
    書式 itoa(変数する数値,変換された文字を格納するバッファ変数,基数(radix))
    基数は2,10,16進数のことで、16を指定すれば16進数の文字に変換される


    itoaは非標準のライブラリ扱いだが、Arduinoでは何もincludeしなくても使える。
    欠点はSerial.printf同様に1回に1つの数値しか変換できないことである。

  2. snprintfを使う
    stdio.hをインクルードして使うため、バイナリが1,500バイトから2,200バイト程度増加する。
    書式 snprintf(変換された文字を格納するバッファ変数,バッファ変数のサイズ,"書式文字列",数値1,数値2, ... )

    ソースはここ