Thought I would share this with you guys. Lots of hard work and resources coming together at a really fun event
Unfortunately, it’s running the Adafruit library and not FastSPI since I kept getting flickering colors past ~60 pixels. It seemed to be a timing issue since it was not power related, and the Adafruit library handled it perfectly.
I also needed 4 independent output pins, and the Adafruit library seemed to be more compact, allowing me to use the rest of the 30K memory limit for programming patterns.
Thanks, I’d like to figure that one out too. I tried playing with some of the timing settings in the fastSPI library but alas, could not get it to work
I kept thinking it was a power or grounding issue but that hypothesis was busted when I tried a different library
Standard WS2811’s, can’t remember the exact chip but I can check later
Arduino Nano v3.1, and I was playing with RC3. Was really pressured on time building this and didn’t get a chance to play with RC4 yet. Maybe I’ll give that a test sometime the next few days
Haha, of course I find out about better solutions to my problems afterwards…
In testing, I really like the fastSPI hsv->rgb converter. Adafruit uses a meh “color wheel” and I ended up having to input my own hsv->rgb converter. It worked, but wasn’t as refined or balanced as the fastSPI one
For future reference, there’s no reason why you couldn’t use the FastSPI_LED code for hsv to rgb conversion and then use some other code for the actual rgb data - there’s no code size penalty with that (if you never use addLeds, none of that code would end up a part of your final build). That’s an example to add to the library… (using the non-led-writing bits of the code to do other rgb related stuff - e.g. when using someone else’s library to write data out, or using something else entirely, e.g. using the HSV library to prepare data for an rgb lcd panel
Yeah, that was my original thought, to port in your hsv to rgb converter. I did try that initially but got discouraged with the adaptive code needed, and figuring out which are the right files to include (turns out the converter also references other files, and I’m still relatively new at C in general)
I managed to write a lightweight hsv-rgb converter as a simple function in the main file, maybe 10-20 lines of code
You wouldn’t have even needed to port it, you could include FastSPI_LED2.h as well as the neopixel library. Then you could simply do:
CRGB temp(CHSV(x, y, z));
neopixels.set(i, temp.r, temp.g, temp.b);
I will make sure we put this into the examples code. (I also want to write up examples for using FastPin and FastSPI classes to do pin and SPI i/o without necessarily being related to led work, as those classes were also designed to work on their own).
As far as I can tell, the linker does ‘tree shaking’ and only includes in the binary functions that are actually called (and class static storage aka global variables). Since the library has very small global storage requirements, that means basically you only “pay for” what you actually use.