Hey guys, just looking for a bit of help with some math and a color wheel.
I’m playing with the MSGEQ7 (datasheet) and throwing 7 frequency bands onto an 8x8 NeoMatrix grid. It’s working ok - I currently have each row mapped to an increasingly higher frequency (row 1 (leds 0-7) is 63Hz, row 2 is 160Hz, so on). Pixel output code looks like so:
for(int i=0;i<7;i++){
ledValue = map(spectrumValue[i], 0, 1023, 0, 255);
c = strip.Color(0,0,ledValue);
for(int j=0;j<7;j++){
strip.setPixelColor(j+(8*i), c );
}
}
strip.show();
So each row corresponds to the analogRead value in the spectrumValue[i]
array. I would like to accomplish 2 more things (may not be possible together):
- Have each row a different color, working through the color wheel. 8 rows, 8 different colors (1 color per row)
- (Long shot) Have each row only light the pixels 0-7 representing the overall intensity of the analog value, much more like a traditional spectrum analyzer.
I thought about mapping green and red channels as well, like:
grnVal = map(i, 0, 7, 0, 255);
redVal = map(i, 0, 7, 0, 255);
c = strip.Color(grnVal, redVal ,ledValue);
… but this just produces some boring colors ranging from white to yellow. Not too concerned about #2, but does anybody have an idea of how to programatically adjust colors cycling through the wheel? Will reward with video!