Hello, I am a highschool student working on an engineering project for my school. My end goal for the project is a 5ft tall 3d H that measures the sound level of the students durring our grade level spirit chant and displays that sound level as light, which will fill the H as the sound gets louder. I would also like the H to put on light shows that could go to sound and also put on light shows without sound. There are 2 led pannels (one for each side) each containing 442 WS2812B leds. I have tried wiring them in a diffeernet ways but have not setteled on how I would like to do it. I wired one in a serpentine pattern with one input and the other with all strips traveling upward, each with their own input. I have looked into using Glediator but, I do not know if it can do exactly what I want. At the moment I have the side with seperate inputs working as a vu meter because of a sample program that I modified, but the gaps in the H cause distortion in the vu meter (the strips with gaps are shorter strips and the program still thinks it has 37 pixels). I have all inputs connected to a terminal block so they all recive the same signal. I was thinking I could put all strips that are on the same level on seperate terminal blocks and index them in the program somehow. But the drawback of doing it that way is I could only do vertical anamations. Im not very good at programming and I dont know much about using the fastled library. I have found an irregular shaped array pixel mapper that would help to set up an array in fastled using the serpentine board, which would be the best way to do it. For the mic I am using the adafruit mic with built in amp. I need help being pointed in the right direction. Im open to any ideas or suggestions.
Great project Brandon. I was going to point to you Garrett Mace’s XY map generator but I see you’ve already found that. Did you try to get that setup and working? I guess it will not work though if you are using multiple data inputs and duplicated signals. You would probably want one side of the H to be one long continuous strip.
Regardless of if it’s XY mapped or not, you can create separate custom arrays to specify a set of non-contiguous pixel numbers in whatever sort of pattern (column, diagonal line, outline, etc) you want to light up. So even if it’s not mapped you could still do a UV meter setup. Might be something like:
//somewhere at the top of your program
#define ARRAY_SIZE(A) ( sizeof(A) / sizeof((A)[0]) )
uint8_t set1[ ] = {2,3,10,14,18,30,31,etc};
uint8_t set2[ ] = {4,5,6,20,21,25,…};
uint8_t set3[ ] = etc…
//and then in the main loop, or more likely in a function somewhere:
uint8_t subsetLength = ARRAY_SIZE(set1);
for(uint8_t i=0; i<subsetLength ; i++) {
leds[ set1[i] ] = CRGB::Red;
}
You could also totally use Glediator if you XY map the H.
The finished H with the bent metal edging looks great!
Check out @Andrew_Tuline 's “sound*” related code examples here for some audio reactive fun.
@marmil Thanks for the information, but im not sure how to set up an array in the fastled library, if you could point me to an example program for an array wired in a serpentine pattern that would help me out alot.
Have a look at this example:
Also a bit of serpentine code here:
There’s also a matrix library that can be used with FastLED by Aaron Liddiment. Lots more to get into, but I’ll throw it out there. There’s an example or two included.
Nice work Brandon!
@Brandon_Self Very cool project! If you don’t mind me asking, what FRC team are you on?



