ハードシーケンサ開発。(その13:文字列描画と数値の変換)

シーケンサ作るための仕様はあらかた決めた

仕様と描画情報を決めて、要求を満たすために必要そうな機能を調べてます。

シーケンサ動作の仕組み自体はすでに調査済みのため、ここ数日描画周りについて調べてました。

数値→文字列への変換を行ってから描画する

文字列描画をする際、数値についてはprint関数で描画可能だが、
文字列を反転させたりすることを考えると、char配列から描画する必要がある。
よって、数値からchar配列にできたほうがいい。

なので、変換ライブラリないかなって調べてみても、作り方のっけてるか、標準的なライブラリがない。
結構使うから用意しとこうぜ・・・って思うのだが。

よって、ユーティリティ関数を時間かけずに作った。

配列切り刻んで、って形だと除算が出たりメンテ面倒だしそれだったら内部で変換してる関数使うよ。

ソースコード

Arduino環境でu8g2使っていることが前提になります。
適当にMITライセンスで。

内容としては、「byte型の数値を反転描画する」ものになります。
内部では「byte型をString型に変換→String型からchar型に変換→反転フラグを立てて描画」ってのを行ってます。

もちろん変数を外だしにもできますが、やりすぎると生の関数使ってんのと変わらないので黙殺。


void drawByteInv(byte dat,byte x,byte y ){
  String temp=String(dat);
  byte len=temp.length()+1;
  char result[len];
  temp.toCharArray(result, len);

  u8g2.drawButtonUTF8(x, y, U8G2_BTN_INV, 0, 1, 1, result );
}

参考資料

ArduinoでString→char変換を試したらドツボに嵌った – 戯言日記 (hatenablog.com)

u8g2reference · olikraus/u8g2 Wiki (github.com)