8

こんにちは、スコア値を表示するために adafruit シールドを備えた Arduino UNO を使用していますが、スコアを表示するために使用される関数は char* 値のみを受け入れ、スコア自体は最大 6 桁 (000,000 から 999,999) を占めることができます。私は sprint() を使ってみましたが、画面が狂ったようにちらつくので運がありませんでした。問題は、文字が32ビットのintに収まらない特定のバイト数しか保持できないことだと思いますが、これは回避策だと思います。draw text は、入力が char*、カラーコード、サイズ、x ピクセル、y ピクセルである画面上にものを描画するためにシールドによって使用される関数です。誰かが私がこれらの 2 つのタイプの間で変換するのを手伝ってくれるなら、私に知らせてください。また、それらが私にも役立つ代替手段である場合。

私のコード:

char* textToWrite;
uint32_t currentScore = 0;
uint32_t highScore = 0;
highScore = currentScore;
sprintf(textToWrite,"%d.%d.%d.%d\0", currentScore);//sprint f not working properly right now
drawText(textToWrite, ST7735_WHITE, 1, 100, 10);

私も使用してみました:

sprintf(textToWrite,"%u", currentScore);
4

1 に答える 1

14
char textToWrite[ 16 ];
uint32_t currentScore = 42;
// as per comment from LS_dev, platform is int 16bits
sprintf(textToWrite,"%lu", currentScore);
于 2013-11-26T16:25:26.570 に答える