A christmas lighting project is what got me back into my Pixelblaze recently.
There’s three ways to sequence patterns: The built-in sequencer, triggering different patterns externally via the wifi network connection (using the websocket API that Firestorm uses), and writing code to combine multiple patterns into a single pattern. This last one is the only one that could accomplish crossfading at the moment.
You can see the built in sequencer at the top of the main Patterns tab. To specify the order patterns run in, give them names that sort them lexically (e.g. start your first pattern with “10 -“ then “20 -“ and you can then change your mind later and insert “15 -“).
To trigger externally, there have been a few threads here on the forums that give detail on the websocket frame format. Search for Firestorm and you’ll find those pretty easily.
To write a sequencer in code, start by looking through the “Example: Modes and waveforms” pattern which comes preloaded on Pixelblaze (it’s also on the online pattern library).
To implement crossfading, there’s a few approaches off the top of my head, but unless you’re just fading through white or black, you’ll be implementing a method of variably blending each pixel. Maybe a weighted average of the R, G, and B values, or I’m sure there’s an HSV blending function out there somewhere you can adapt. Hope this helps get you started!
Yes, I think that’s quite doable. If you had the two-patterns-in-one crossfading code, you’d just trigger the change based on a button or capacitive touch input - see pinMode(INPUT_PULLDOWN), touchRead() and digitalRead() in the docs. If you have any Arduino experience this should feel very familiar. The only “fun” part is figuring out how to reference the pin you’re using, I always get confused, try a few things, then figure it out using the schematic