Arduino Adafruit NeoMatrix 库

Arduino Adafruit NeoMatrix library

我正在测试 Adafruit_NeoMatrix 库,示例如下: https://github.com/adafruit/Adafruit_NeoMatrix/blob/master/examples/tiletest/tiletest.pde 我无法弄清楚文本长度和 if 语句的关系:

 if(--x < -36) {

更多的文本长度意味着增加数字“36”,但我并没有真正看出其中的关系

-36定义了基于字体宽度、屏幕宽度和文本长度的最大位移。 Adafruit_GFX 的标准字体是每个字符 6px。您需要此光标值才能正确呈现字体字符。

您需要的变量...

char exampleText[32] = "This is a test";
int  pixelPerChar = 6;
int  maxDisplacement;

计算开始时的最大位移...

void setup()
{
  maxDisplacement = strlen(exampleText) * pixelPerChar + matrix.width();
  //...
}

循环函数中...

//...
if (--x < -maxDisplacement)
{
    x = matrix.width();
}
//...

如果将 if 语句写成下面的等价方式,会更容易理解:

x--;
if(x < -36) { ... }

x 是光标位置,即字符串的开头。一开始它等于行的长度,这意味着该字符串隐藏在屏幕的右侧。每次迭代,光标向左移动一步,直到它到达坐标 -36。如果字符串短于 36,它将隐藏在屏幕的左侧。然后整个例程用不同的颜色重新初始化。