我使用Arduino、移位寄存器和TLC5940s制作了一个24 x 15的LED矩阵。
Arduino Uno只有32KB的内存,因此图形没有预先存储到数组中。相反,我编写算法使用数学方程生成艺术动画。
彩虹正弦波的示例代码如下:
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很快就会用完32KB的RAM。
我将尝试获取Arduino Mega,但现在假设这不是一个选项。
我该怎么做?