This seems to be a common use case and one that I've been looking at too but I've not yet found any easy answer yet. In my case, I'm using LPD8806 and WS2801 based LED strips/strands, but they can be driven by SPI hardware and I have the same underlying issues. I would love to read more discussion of Ethernet/WIZ820io/PJRC-adaper + FastLED. I'll give my understanding but others with knowledge please add to or correct me.
Teensy 3.0 and 3.1 have only 1 SPI port. The new Teensy 3 LC has 2 SPI ports but I am ignorant wrt using the second SPI port for anything. The WIZ820io uses SPI but we'd also like to use the SPI hardware to drive our LEDs. I've found 2 sources of issues:
1. the LEDs don't have any sort of chip select, so any SPI sends to the WIZ820io will also sent to the LEDs and that will probably screw up their state.
2. While the Ethernet library uses SPI Transactions, FastLED does not. The Ethernet library uses the built-in SPI library, FastLED uses it's own SPI library.
I don't know how, and it might be impractical, to share SPI between multiple libraries or other code when one of them does not use SPI Transactions or uses different low-level SPI code.
for issue 1, one can imagine adding some sort of gating circuit for the LEDs.I have not prototyped anything like this so I'm just saying it could probably be done with additional hardware. If one were using a logic level shifter already, and it had an Enable/Disable control, perhaps this could be used to implement device select logic for the LEDs.
One could also use FastLED's
software SPI on non-SPI pins. This will of course use way more processor resources but might be acceptable if there is nothing else for it to do.
for issue 2, I cannot see a way forward if the LEDs use hardware SPI. FastSPI is already very modular and flexible, and it's own SPI code is refactored into it's own set of classes and supports a wide range of SPI implementations. I find myself wishing that there was an implementation that delegated to the "built-in" SPI library and could, somehow, use SPI Transactions.
I understand the desire to use FastLED and it has become more than just a LED driver library. If I had to implement something today and had to stop waiting for a better solution, I think I'd use FastLED with software SPI using 2 of the available digital pins and see if I could live with the software SPI performance (or, rather, CPU utilization).
I'd love to hear what those with more experience and knowledge think on this topic.