So I did a manual remapping from the Graphics.buffer to the way my modules are chained:
/* Graphics.buffer (not zigzag): 00 01 02 03 04 05 06 07 08 09 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 My module chained, three 4x4 modules horizontally: 00 01 02 03 16 17 18 19 32 33 34 35 07 06 05 04 23 22 21 20 39 38 37 36 08 09 10 11 24 25 26 27 40 41 42 43 15 14 13 12 31 30 29 28 47 46 45 44 */
And use this code, with a util function to copy the triplets of RGB per index:
// var neopixel = require("neopixel"); var leds = Graphics.createArrayBuffer(12,4,24,{zigzag:false}); var getTriplet = function(array,index){ index*=3; var result =[array[index],array[index+1],array[index+2]]; return result; }; leds.flip = function() { var rawBuffer = []; rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,0)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,1)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,2)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,3)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,15)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,14)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,13)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,12)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,24)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,25)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,26)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,27)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,39)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,38)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,37)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,36)); // rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,4)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,5)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,6)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,7)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,19)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,18)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,17)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,16)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,28)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,29)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,30)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,31)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,43)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,42)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,41)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,40)); // rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,8)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,9)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,10)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,11)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,23)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,22)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,21)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,20)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,32)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,33)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,34)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,35)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,47)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,46)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,45)); rawBuffer.push.apply(rawBuffer,getTriplet(leds.buffer,44)); neopixel.write(B15, rawBuffer); };
The above does the trick, but all of the array operations slowed down the performance quite a bit... :(
Anybody know any tips on the best way for this kinds of operation?
@n00b started
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
So I did a manual remapping from the Graphics.buffer to the way my modules are chained:
And use this code, with a util function to copy the triplets of RGB per index:
The above does the trick, but all of the array operations slowed down the performance quite a bit... :(
Anybody know any tips on the best way for this kinds of operation?