我使用 Arduino、移位寄存器和TLC5940s制作了一个 24 x 15 LED 矩阵。
Arduino Uno的内存只有区区 32 KB,因此图形不会事先存储到数组中。相反,我编写算法来使用数学方程式生成艺术动画。
彩虹正弦波的示例代码是:
for (int iterations = 0; iterations < times; iterations++)
{
val += PI/500;
for (int col = 0; col < NUM_COLS; col++)
{
digitalWrite(layerLatchPin, LOW);
shiftOut(layerDataPin, layerClockPin, MSBFIRST, colMasks[col] >> 16 );
shiftOut(layerDataPin, layerClockPin, MSBFIRST, colMasks[col] >> 8 );
shiftOut(layerDataPin, layerClockPin, MSBFIRST, colMasks[col] );
digitalWrite(layerLatchPin, HIGH);
Tlc.clear();
int rainbow1 = 7 + 7*sin(2*PI*col/NUM_COLS_TOTAL + val);
setRainbowSinkValue(rainbow1, k);
Tlc.update();
}
}
其中 setRainbowSinkValue 将其中一个 LED 从 1 到 15 设置为某种颜色,并val
在每次迭代时将波向右移动。
所以我正在寻找像这样的简单图形例程,以便获得很酷的动画,而不必将所有内容存储在数组中,因为 15 x 24 x RGB 很快就会用完所有 32 KB 的 RAM。
我会尝试买一个 Arduino Mega,但让我们假设现在这不是一个选择。
我该怎么做?