8

您好,我正在使用带有 adafruit shield 的 Arduino UNO 来显示分数值,但用于显示分数的函数仅接受 char* 值,并且分数本身最多可以占用 6 位数字(000,000 到 999,999)。我试过使用 sprint() 但我没有运气,因为屏幕会像疯了一样闪烁。我认为问题在于 chars 仅包含一定数量的字节,这些字节无法容纳 32 位 int,但我认为它们是解决此问题的一种方法。绘制文本是屏蔽用于在屏幕上绘制内容的函数,输入为 char*、颜色代码、大小、x 像素、y 像素。如果有人可以帮我在这两种类型之间进行转换,请告诉我。另外,如果他们是对我也有帮助的替代品。

我的代码:

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 回答