FastLED 3.9.15
Loading...
Searching...
No Matches
curr.h File Reference
#include "FastLED.h"
#include "fl/stl/compiler_control.h"
#include "fl/stl/assert.h"
#include "fl/gfx/corkscrew.h"
#include "fl/math/grid.h"
#include "fl/gfx/leds.h"
#include "fl/math/math.h"
#include "fl/math/screenmap.h"
#include "fl/stl/sstream.h"
#include "fl/log/log.h"
#include "noise.h"
#include "fl/stl/array.h"
#include "fl/fx/2d/wave.h"
#include "fl/fx/2d/blend.h"
#include "fl/fx/fx_engine.h"
#include "fl/fx/2d/animartrix.hpp"
+ Include dependency graph for curr.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define CORKSCREW_TURNS   19.25
 
#define NUM_LEDS   288
 
#define PIN_CLOCK   2
 

Functions

fl::UICheckbox allWhite ("All White", false)
 
UINumberField animartrixColorOrder ("fl::Animartrix Color Order", 0, 0, 5)
 
fl::UIGroup animartrixGroup ("fl::Animartrix Controls", animartrixIndex, animartrixTimeSpeed, animartrixColorOrder)
 
UINumberField animartrixIndex ("fl::Animartrix Animation", 5, 0, static_cast< int >(fl::AnimartrixAnim::NUM_ANIMATIONS) - 1)
 
fl::UISlider animartrixTimeSpeed ("fl::Animartrix Time Speed", 1, -10, 10,.1)
 
fl::UICheckbox autoAdvance ("Auto Advance", true)
 
fl::UISlider brightness ("Brightness", 255, 0, 255, 1)
 
fl::UIGroup colorBoostGroup ("Color Boost", saturationFunction, luminanceFunction)
 
fl::Corkscrew corkscrew (CORKSCREW_TURNS, NUM_LEDS)
 
 DEFINE_GRADIENT_PALETTE (electricBlueFirePal)
 
 DEFINE_GRADIENT_PALETTE (electricGreenFirePal)
 
 DEFINE_GRADIENT_PALETTE (firepal)
 
 DEFINE_GRADIENT_PALETTE (waveBluepal)
 
 DEFINE_GRADIENT_PALETTE (waveGreenpal)
 
 DEFINE_GRADIENT_PALETTE (waveRainbowpal)
 
void draw (float pos)
 
void drawAnimartrix (uint32_t now)
 
void drawFire (uint32_t now)
 
void drawNoise (uint32_t now)
 
void drawWave (uint32_t now)
 
fl::UIDescription festivalStickDescription ("# Festival Stick Demo\n\n" "This example demonstrates **proper corkscrew LED mapping** for a festival stick using FastLED's advanced mapping capabilities.\n\n" "## Key Features\n" "- **19+ turns** with 288 LEDs total\n" "- Uses `fl::Corkscrew.toScreenMap()` for accurate web interface visualization\n" "- Multiple render modes: **Noise**, **Position**, **Fire**, **Wave**, and **fl::Animartrix** effects\n" "- Real-time cylindrical surface mapping\n" "- **Wave mode**: Cylindrical 2D wave simulation with ripple effects and configurable blur\n" "- **fl::Animartrix mode**: Advanced 2D animation effects with polar coordinate patterns\n\n" "## How It Works\n" "1. Draws patterns into a rectangular grid (`frameBuffer`)\n" "2. Maps the grid to corkscrew LED positions using `readFrom()`\n" "3. Web interface shows the actual spiral shape via fl::ScreenMap\n\n" "*Select different render modes and adjust parameters to see various effects!*")
 
fl::UITitle festivalStickTitle ("Festival Stick - Advanced Version")
 
void fillFrameBufferFire (uint32_t now)
 
FL_OPTIMIZATION_LEVEL_O0_END void fillFrameBufferNoise ()
 
fl::UIGroup fireGroup ("Fire Controls", fireScaleXY, fireSpeedY, fireScaleX, fireInvSpeedZ, firePalette)
 
fl::UISlider fireInvSpeedZ ("Fire Inverse SpeedZ", 20, 1, 100, 1)
 
UINumberField firePalette ("Fire Palette", 0, 0, 2)
 
fl::UISlider fireScaleX ("Fire ScaleX",.3, 0.1, 3,.01)
 
fl::UISlider fireScaleXY ("Fire Scale", 8, 1, 100, 1)
 
fl::UISlider fireSpeedY ("Fire SpeedY", 1.3, 1, 6,.1)
 
FL_OPTIMIZATION_LEVEL_O0_BEGIN float get_position (uint32_t now)
 
fl::EaseType getEaseType (fl::string value)
 
fl::CRGBPalette16 getFirePalette ()
 
uint8_t getFirePaletteIndex (uint32_t millis32, int width, int max_width, int height, int max_height, uint32_t y_speed)
 
fl::CRGBPalette16 getWavePalette ()
 
void loop ()
 
fl::UIDropdown luminanceFunction ("Luminance Function", easeInfo)
 
fl::UIGroup noiseGroup ("Noise Controls", noiseScale, noiseSpeed, paletteDropdown)
 
fl::UISlider noiseScale ("Noise Scale", 100, 10, 200, 5)
 
fl::UISlider noiseSpeed ("Noise Speed", 4, 1, 100, 1)
 
fl::UIDropdown paletteDropdown ("Color Palette", paletteOptions)
 
fl::UIGroup pointGraphicsGroup ("Point Graphics Mode", speed, positionCoarse, positionFine, positionExtraFine, autoAdvance)
 
fl::UISlider positionCoarse ("Position Coarse (10x)", 0.0f, 0.0f, 1.0f, 0.01f)
 
fl::UISlider positionExtraFine ("Position Extra Fine (0.1x)", 0.0f, 0.0f, 0.01f, 0.0001f)
 
fl::UISlider positionFine ("Position Fine (1x)", 0.0f, 0.0f, 0.1f, 0.001f)
 
void processWaveAutoTrigger (uint32_t now)
 
fl::UIGroup renderGroup ("Render Options", renderModeDropdown, splatRendering, allWhite, brightness)
 
fl::UIDropdown renderModeDropdown ("Render Mode", renderModeOptions)
 
fl::UIDropdown saturationFunction ("Saturation Function", easeInfo)
 
void setup ()
 
fl::UISlider speed ("Speed", 0.1f, 0.01f, 1.0f, 0.01f)
 
fl::UICheckbox splatRendering ("Splat Rendering", true)
 
void triggerWaveRipple ()
 
fl::UICheckbox waveAutoTrigger ("Wave Auto Trigger", true)
 
fl::UISlider waveBlurAmount ("Wave Blur Amount", 50, 0, 172, 1)
 
fl::UISlider waveBlurPasses ("Wave Blur Passes", 1, 1, 10, 1)
 
fl::UISlider waveDampening ("Wave Dampening", 9.1f, 0.0f, 20.0f, 0.1f)
 
fl::UIGroup waveGroup ("Wave Controls", waveSpeed, waveDampening, waveHalfDuplex, waveIsotropicStencil, waveAutoTrigger, waveTriggerSpeed, waveTriggerButton, wavePalette, waveBlurAmount, waveBlurPasses)
 
fl::UICheckbox waveHalfDuplex ("Wave Half Duplex", true)
 
fl::UICheckbox waveIsotropicStencil ("Wave Isotropic stencil (rounder ripples)", false)
 
UINumberField wavePalette ("Wave Palette", 0, 0, 2)
 
fl::UISlider waveSpeed ("Wave Speed", 0.03f, 0.0f, 1.0f, 0.01f)
 
fl::UIButton waveTriggerButton ("Trigger Wave")
 
fl::UISlider waveTriggerSpeed ("Wave Trigger Speed", 0.5f, 0.0f, 1.0f, 0.01f)
 

Variables

fl::unique_ptr< fl::Animartrixanimartrix
 
uint8_t colorLoop = 1
 
constexpr uint16_t CORKSCREW_HEIGHT
 
constexpr uint16_t CORKSCREW_WIDTH
 
fl::WaveCrgbGradientMapPtr crgMap = fl::make_shared<fl::WaveCrgbGradientMap>()
 
static float currentPosition = 0.0f
 
fl::vector< fl::stringeaseInfo
 
fl::shared_ptr< fl::Grid< fl::CRGB > > frameBufferPtr
 
fl::unique_ptr< fl::FxEnginefxEngine
 
static uint32_t lastUpdateTime = 0
 
static uint32_t nextWaveTrigger = 0
 
fl::CRGBPalette16 noisePalette = PartyColors_p
 
fl::string paletteOptions [] = {"Party", "Heat", "Ocean", "Forest", "Rainbow"}
 
fl::string renderModeOptions [] = { "Wave", "fl::Animartrix", "Noise", "Position", "Fire" }
 
fl::ScreenMap screenMap
 
fl::Blend2dPtr waveBlend
 
fl::WaveFxPtr waveFx