I am coming back to FastLED and LEDs after creating a simple project that I was happy with years ago. I want to create a FastLED based DMX slave device. This would ideally read DMX frames and switch the running pattern based on the value of a specific channel (while another channel controls the overall brightness, etc.). My issue may be one with FastLED or may be with the way I am reading DMX, but in a nutshell, I use interrupts to read incoming DMX information (after running through a MAX485 for logical translation) on the RX pin of my Arduino. I currently would like to drive SK6812 chips which rely on WS2812 timings, disabling interrupts on my board. Is there a board (one of the ARM based?) that could handle both the reading of a DMX frame (44us) and the driving of WS2812 LEDs? [Here I may be making a coding error. It takes 44us to receive each dmx channel, at which time the interrupt is raised. If my interrupt service routine finishes in < 5us would the arm based boards be able to handle the reading of DMX even though the frame is coming in across 44us?] I am not opposed to switching to a 4 wire chipset (solving my problem all together) but I am waiting patiently for the day that FastLED supports RGBW LEDs and so far I have only found them in WS2812 variants.
I don’t know for sure, but maybe ESP32 could handle it? They have two cores, and I’m thinking you could have one core handling FastLED while the other handles the serial comma?
If your ISR is fast enough you could use a Teensy 3.2, 3.5 or 3.6.
“You could move to the teensy 3.x or the arduino due. These are ARM based systems that have far more clock cycles per second available to them. On these platforms, FastLED will briefly re-enable interrupts between each pixel, to allow handlers to run. As long as those interrupt handlers don’t take more than 5µs to run, everything will be happy. As long as your interrupt handlers don’t need to run more frequently than once every 30µs, that is.”
[ From here: https://github.com/FastLED/FastLED/wiki/Interrupt-problems ]
Another option would be to use two controllers, one to read the DMX, which then tells the other controller what pattern run.
The esp32 is a good platform do that.
While doing a very similar project I went though many different dmx libraries before finally settling on using a teensy 3.2 with octo board and TeensyDmx