This sketch is fully compatible with the FastLED web compiler.
This sketch is fully compatible with the FastLED web compiler. To use it do the following:
#define FL_ANIMARTRIX_USES_FAST_MATH 1
#include "FastLED.h"
#if defined(FL_IS_TEENSY)
#include <Audio.h>
#endif
#include <FastLED.h>
#ifndef PIN_DATA
#define PIN_DATA 3
#endif
#ifndef LED_PIN
#define LED_PIN PIN_DATA
#endif
#define BRIGHTNESS 32
#define COLOR_ORDER GRB
#define MATRIX_WIDTH 64
#define MATRIX_HEIGHT 64
#define NUM_LEDS (MATRIX_WIDTH * MATRIX_HEIGHT)
#define FIRST_ANIMATION fl::AnimartrixAnim::POLAR_WAVES
#define LED_DIAMETER 0.15
#define POWER_LIMITER_ACTIVE
#define POWER_VOLTS 5
#define POWER_MILLIAMPS 2000
"RGB_BLOBS5", "RGB_BLOBS4", "RGB_BLOBS3", "RGB_BLOBS2", "RGB_BLOBS",
"POLAR_WAVES", "SLOW_FADE", "ZOOM2", "ZOOM", "HOT_BLOB",
"SPIRALUS2", "SPIRALUS", "YVES", "SCALEDEMO1", "LAVA1",
"CALEIDO3", "CALEIDO2", "CALEIDO1", "DISTANCE_EXPERIMENT", "CENTER_FIELD",
"WAVES", "CHASING_SPIRALS", "ROTATING_BLOB", "RINGS", "COMPLEX_KALEIDO",
"COMPLEX_KALEIDO_2", "COMPLEX_KALEIDO_3", "COMPLEX_KALEIDO_4", "COMPLEX_KALEIDO_5", "COMPLEX_KALEIDO_6",
"WATER", "PARAMETRIC_WATER", "MODULE_EXPERIMENT1", "MODULE_EXPERIMENT2", "MODULE_EXPERIMENT3",
"MODULE_EXPERIMENT4", "MODULE_EXPERIMENT5", "MODULE_EXPERIMENT6", "MODULE_EXPERIMENT7", "MODULE_EXPERIMENT8",
"MODULE_EXPERIMENT9", "MODULE_EXPERIMENT10", "MODULE_EXPERIMENT_SM1", "MODULE_EXPERIMENT_SM2", "MODULE_EXPERIMENT_SM3",
"MODULE_EXPERIMENT_SM4", "MODULE_EXPERIMENT_SM5", "MODULE_EXPERIMENT_SM6", "MODULE_EXPERIMENT_SM8", "MODULE_EXPERIMENT_SM9",
"MODULE_EXPERIMENT_SM10", "FLUFFY_BLOBS"
});
}
}
auto screen_map =
xyMap.toScreenMap();
.setScreenMap(screen_map);
int value = dropdown.
as_int();
switch(value) {
case 0: value =
static_cast<int>(
RGB);
break;
case 1: value =
static_cast<int>(
RBG);
break;
case 2: value =
static_cast<int>(
GRB);
break;
case 3: value =
static_cast<int>(
GBR);
break;
case 4: value =
static_cast<int>(
BRG);
break;
case 5: value =
static_cast<int>(
BGR);
break;
}
});
return;
}
});
});
});
});
}
{
sAudioSamples++;
if (sAudioSamples == 1) {
} else if (sAudioSamples % 172 == 0) {
FL_WARN(
"Animartrix: " << sAudioSamples <<
" audio samples processed, enableVibeReactive=" << (
int)
enableVibeReactive.value());
}
}
}
}
}
static int lastFxIndex = -1;
if (
fxIndex.as_int() != lastFxIndex) {
}
FL_WARN(
"*** DRAW TIME: " <<
int(end - start) <<
"ms");
FL_WARN(
"*** SHOW + DRAW TIME: " <<
int(end2 - start) <<
"ms");
}
fl::UIAudio audio("Audio Input")
fl::UISlider vibeSpeedMultiplier("Vibe Speed Multiplier", 3.0, 0.0, 10.0, 0.1)
fl::audio::Processor audioProcessor
fl::UICheckbox enableVibeReactive("Enable Vibe Reactive", false)
fl::FxEngine fxEngine(NUM_LEDS)
fl::UIDescription description("Demo of the Animatrix effects. @author of fx is StefanPetrick")
fl::Animartrix animartrix(xyMap, FIRST_ANIMATION)
fl::UITitle title("Animartrix")
const bool kPowerLimiterActive
fl::UIDropdown fxIndex("Animartrix - index", { "RGB_BLOBS5", "RGB_BLOBS4", "RGB_BLOBS3", "RGB_BLOBS2", "RGB_BLOBS", "POLAR_WAVES", "SLOW_FADE", "ZOOM2", "ZOOM", "HOT_BLOB", "SPIRALUS2", "SPIRALUS", "YVES", "SCALEDEMO1", "LAVA1", "CALEIDO3", "CALEIDO2", "CALEIDO1", "DISTANCE_EXPERIMENT", "CENTER_FIELD", "WAVES", "CHASING_SPIRALS", "ROTATING_BLOB", "RINGS", "COMPLEX_KALEIDO", "COMPLEX_KALEIDO_2", "COMPLEX_KALEIDO_3", "COMPLEX_KALEIDO_4", "COMPLEX_KALEIDO_5", "COMPLEX_KALEIDO_6", "WATER", "PARAMETRIC_WATER", "MODULE_EXPERIMENT1", "MODULE_EXPERIMENT2", "MODULE_EXPERIMENT3", "MODULE_EXPERIMENT4", "MODULE_EXPERIMENT5", "MODULE_EXPERIMENT6", "MODULE_EXPERIMENT7", "MODULE_EXPERIMENT8", "MODULE_EXPERIMENT9", "MODULE_EXPERIMENT10", "MODULE_EXPERIMENT_SM1", "MODULE_EXPERIMENT_SM2", "MODULE_EXPERIMENT_SM3", "MODULE_EXPERIMENT_SM4", "MODULE_EXPERIMENT_SM5", "MODULE_EXPERIMENT_SM6", "MODULE_EXPERIMENT_SM8", "MODULE_EXPERIMENT_SM9", "MODULE_EXPERIMENT_SM10", "FLUFFY_BLOBS" })
fl::UISlider timeSpeed("Time Speed", 1, -10, 10,.1)
fl::UISlider brightness("Brightness", BRIGHTNESS, 0, 255)
fl::UIDropdown colorOrder("Color Order", {"RGB", "RBG", "GRB", "GBR", "BRG", "BGR"})
fl::UISlider vibeBaseSpeed("Vibe Base Speed", 1.0, 0.0, 5.0, 0.1)
FL_DISABLE_WARNING_PUSH FL_DISABLE_WARNING_GLOBAL_CONSTRUCTORS CFastLED FastLED
Global LED strip management instance.
Manages and renders multiple visual effects (Fx) for LED strips.
int as_int() const FL_NOEXCEPT
static XYMap constructRectangularGrid(u16 width, u16 height, u16 offset=0) FL_NOEXCEPT
@ TypicalLEDStrip
Typical values for SMD5050 LEDs.
FastLED's Elegant JSON Library: fl::json
fl::u32 millis()
Universal millisecond timer - returns milliseconds since system startup.
constexpr T * end(T(&array)[N]) FL_NOEXCEPT
CRGB sample(const CRGB *grid, const XYMap &xyMap, float x, float y, SampleMode mode)
Sample a pixel from a 2D CRGB grid at floating-point coordinates.
EOrder
RGB color channel orderings, used when instantiating controllers to determine what order the controll...
Representation of an 8-bit RGB pixel (Red, Green, Blue)
Aggregator header for the fl/ui/ family of per-element UI types.