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

itoaは非標準のライブラリ扱いだが、Arduinoでは何もincludeしなくても使える。
欠点はSerial.printf同様に1回に1つの数値しか変換できないことである。
- snprintfを使う
stdio.hをインクルードして使うため、バイナリが1,500バイトから2,200バイト程度増加する。
書式 snprintf(変換された文字を格納するバッファ変数,バッファ変数のサイズ,"書式文字列",数値1,数値2, ... )
ソースはここ
|
|