1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
struct TICKS {
unsigned long epoch;
unsigned long lutTick;
unsigned long showTick;
};
void printTicks(struct TICKS t) {
char str[64];
sprintf(str, "lut: %lu", t.lutTick - t.epoch);
Serial.println(str);
sprintf(str, "shw: %lu", t.showTick - t.lutTick);
Serial.println(str);
}
void init(CRGB *l, size_t count) {
for (size_t i=0; i < count; i++) {
l[i].r = random8();
l[i].g = random8();
l[i].b = random8();
}
}
// main function that setups and runs the code
void setup() {
Serial.begin(9600);
CRGB data[5][5][5] = {
{
{ CRGB(0,0,0), CRGB(6,3,59), CRGB(10,1,121), CRGB(17,0,187), CRGB(40,0,253) },
{ CRGB(2,54,4), CRGB(8,54,53), CRGB(11,53,119), CRGB(19,51,183), CRGB(48,48,253) },
{ CRGB(8,117,12), CRGB(12,117,52), CRGB(19,117,116), CRGB(19,117,180), CRGB(48,114,253) },
{ CRGB(5,179,28), CRGB(4,179,57), CRGB(19,179,115), CRGB(25,179,178), CRGB(46,179,252) },
{ CRGB(56,249,52), CRGB(55,249,70), CRGB(59,248,120), CRGB(62,249,179), CRGB(68,251,253) }
}, {
{ CRGB(54,3,3), CRGB(54,5,57), CRGB(54,4,120), CRGB(55,0,183), CRGB(63,0,253) },
{ CRGB(51,54,8), CRGB(51,52,47), CRGB(54,51,118), CRGB(55,48,183), CRGB(70,48,253) },
{ CRGB(48,116,16), CRGB(49,115,51), CRGB(56,117,115), CRGB(55,115,178), CRGB(66,113,253) },
{ CRGB(47,178,34), CRGB(45,177,57), CRGB(54,177,113), CRGB(56,177,176), CRGB(64,179,253) },
{ CRGB(74,248,50), CRGB(70,249,68), CRGB(74,248,120), CRGB(74,250,178), CRGB(76,251,252) }
}, {
{ CRGB(121,3,3), CRGB(121,3,54), CRGB(122,1,119), CRGB(120,6,183), CRGB(120,1,253) },
{ CRGB(119,51,9), CRGB(118,52,51), CRGB(119,50,117), CRGB(119,47,181), CRGB(122,48,253) },
{ CRGB(118,116,17), CRGB(119,116,49), CRGB(118,117,112), CRGB(119,115,181), CRGB(118,112,252) },
{ CRGB(116,180,34), CRGB(116,178,55), CRGB(118,179,112), CRGB(117,179,178), CRGB(119,179,253) },
{ CRGB(123,247,51), CRGB(121,248,69), CRGB(121,250,118), CRGB(123,251,179), CRGB(121,251,252) }
}, {
{ CRGB(180,10,6), CRGB(181,10,52), CRGB(182,0,118), CRGB(183,0,182), CRGB(183,2,253) },
{ CRGB(179,51,12), CRGB(178,51,50), CRGB(179,48,115), CRGB(180,44,181), CRGB(182,46,253) },
{ CRGB(181,116,20), CRGB(179,115,50), CRGB(180,117,114), CRGB(178,116,179), CRGB(181,112,253) },
{ CRGB(183,184,30), CRGB(183,182,53), CRGB(180,179,108), CRGB(182,180,176), CRGB(180,178,253) },
{ CRGB(178,249,47), CRGB(178,249,59), CRGB(180,251,110), CRGB(182,251,177), CRGB(182,252,253) }
}, {
{ CRGB(251,32,14), CRGB(254,32,55), CRGB(254,33,116), CRGB(255,36,179), CRGB(255,39,250) },
{ CRGB(250,62,17), CRGB(253,60,54), CRGB(254,60,114), CRGB(255,59,179), CRGB(254,59,251) },
{ CRGB(251,117,23), CRGB(251,115,57), CRGB(251,116,115), CRGB(253,115,178), CRGB(254,114,252) },
{ CRGB(249,181,32), CRGB(248,177,51), CRGB(250,178,111), CRGB(252,179,178), CRGB(253,179,253) },
{ CRGB(250,254,46), CRGB(251,253,55), CRGB(251,250,98), CRGB(253,252,172), CRGB(255,254,253) }
}
};
#define TEST_SIZE 300
CRGB leds[TEST_SIZE];
init(leds, TEST_SIZE);
Array3DLUT lut = Array3DLUT(&data[0][0][0], 5);
FastLED.addLeds<APA102, 11, 13, RGB>(leds, TEST_SIZE);
for (;;) {
struct TICKS t;
t.epoch = millis();
for (size_t i=0; i < TEST_SIZE; i++) {
leds[i] = lut.lookup3DTetrahedral(leds[i]);
}
t.lutTick = millis();
FastLED.show();
t.showTick = millis();
printTicks(t);
init(leds, TEST_SIZE);
}
Serial.flush();
Serial.end();
} // end of setup |
Partager