@jackmtaco
Thanks again for the another cup of coffee 😁 ☕
Don't give up just yet 😊
If you're not running the effects at the same time, then it should be very doable to combine the effects into one sketch.
With FastLED (I'll admit that I have never tried this), you can even hookup multiple LED strips.
This should work something like this:
#define NUM_LEDS_STRIP1 60 // assuming strip 1 has 60 LEDs
#define NUM_LEDS_STRIP2 20 // assuming strip 3 has 20 LEDs
...
#define STRIP1_PIN 6 // strip 1 connected to pin 6
#define STRIP2_PIN 7 // strip 1 connected to pin 7
...
CRGB ledstrip1[NUM_LEDS_STRIP1]; // define ledstrip1 instead of "leds"
CRGB ledstrip2[NUM_LEDS_STRIP2]; // define ledstrip2 instead of "leds"
...
void setup() {
// Create leds array for strip 1 (now called "ledstrip1" instead of "leds")
FastLED.addLeds< WS2811, STRIP1_PIN, GRB >(ledstrip1, NUM_LEDS_STRIP1).setCorrection( TypicalLEDStrip );
// Create leds array for strip 2 (now called "ledstrip2" instead of "leds")
FastLED.addLeds< WS2811, STRIP2_PIN, GRB >(ledstrip2, NUM_LEDS_STRIP2).setCorrection( TypicalLEDStrip );
...
}
...
// example from one of the effects, calling strip 1:
// was: leds[LEDPos+PhaserBlock].fadeLightBy( DimmingPhaserAim );
ledstrip1[LEDPos+PhaserBlock].fadeLightBy( DimmingPhaserAim );
// example from one of the effects, calling strip 2:
// was: leds[LEDPos+PhaserBlock].fadeLightBy( DimmingPhaserAim );
ledstrip2[LEDPos+PhaserBlock].fadeLightBy( DimmingPhaserAim );
...
So this would mean that you'd have to replace "leds" with "ledstrip1" and "NUM_LEDS" with "NUM_LEDS_STRIP1" for the effect that is supposed to run on the first strip.
This would also mean that you'd have to replace "leds" with "ledstrip2" and "NUM_LEDS" with "NUM_LEDS_STRIP2" for the effect that is supposed to run on the second strip.
Having done that, you can merge the functions of one sketch into the other.
If you could post your 2 effects, then I'll try to merge them for you - would be good to know the number or strips and the number of LEDs per strip.
Each strip has its own pin.
The basic steps to merge 2 sketches is to see first what they have in common (eg. led definitions and such), and what they do not have in common. Like I said: I can combine them for you if you'd like, and I can add an explanation with it as well.
As for selecting the effect, we could introduce 2 buttons, and in the loop check if one of the buttons is pressed or not.
Note: with this approach pressing another button will not be detected until the running effect is done. We can add an interrupt to catch that, if needed.
As for the AdaFruit Music Maker:
I have no experience with that one, and it looks (I could be wrong) a little more complicated than the DFPlayer Trace uses. I wouldn't mind looking at that with you (maybe start a separate topic for that one though).