FastLED 3.9.15
Loading...
Searching...
No Matches
curr.h File Reference
#include "FastLED.h"
#include "fl/compiler_control.h"
#include "fl/assert.h"
#include "fl/corkscrew.h"
#include "fl/grid.h"
#include "fl/leds.h"
#include "fl/screenmap.h"
#include "fl/sstream.h"
#include "fl/warn.h"
#include "noise.h"
#include "fl/array.h"
#include "fx/2d/wave.h"
#include "fx/2d/blend.h"
#include "fx/fx_engine.h"
#include "fx/2d/animartrix.hpp"
+ Include dependency graph for curr.h:

Go to the source code of this file.

Macros

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

Functions

UICheckbox allWhite ("All White", false)
 
UINumberField animartrixColorOrder ("Animartrix Color Order", 0, 0, 5)
 
UIGroup animartrixGroup ("Animartrix Controls", animartrixIndex, animartrixTimeSpeed, animartrixColorOrder)
 
UINumberField animartrixIndex ("Animartrix Animation", 5, 0, NUM_ANIMATIONS - 1)
 
UISlider animartrixTimeSpeed ("Animartrix Time Speed", 1, -10, 10,.1)
 
UICheckbox autoAdvance ("Auto Advance", true)
 
UISlider brightness ("Brightness", 255, 0, 255, 1)
 
UIGroup colorBoostGroup ("Color Boost", saturationFunction, luminanceFunction)
 
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)
 
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 `Corkscrew.toScreenMap()` for accurate web interface visualization\n" "- Multiple render modes: **Noise**, **Position**, **Fire**, **Wave**, and **Animartrix** effects\n" "- Real-time cylindrical surface mapping\n" "- **Wave mode**: Cylindrical 2D wave simulation with ripple effects and configurable blur\n" "- **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 ScreenMap\n\n" "*Select different render modes and adjust parameters to see various effects!*")
 
UITitle festivalStickTitle ("Festival Stick - Advanced Version")
 
void fillFrameBufferFire (uint32_t now)
 
FL_OPTIMIZATION_LEVEL_O0_END void fillFrameBufferNoise ()
 
UIGroup fireGroup ("Fire Controls", fireScaleXY, fireSpeedY, fireScaleX, fireInvSpeedZ, firePalette)
 
UISlider fireInvSpeedZ ("Fire Inverse SpeedZ", 20, 1, 100, 1)
 
UINumberField firePalette ("Fire Palette", 0, 0, 2)
 
UISlider fireScaleX ("Fire ScaleX",.3, 0.1, 3,.01)
 
UISlider fireScaleXY ("Fire Scale", 8, 1, 100, 1)
 
UISlider fireSpeedY ("Fire SpeedY", 1.3, 1, 6,.1)
 
FL_OPTIMIZATION_LEVEL_O0_BEGIN float get_position (uint32_t now)
 
EaseType getEaseType (fl::string value)
 
CRGBPalette16 getFirePalette ()
 
uint8_t getFirePaletteIndex (uint32_t millis32, int width, int max_width, int height, int max_height, uint32_t y_speed)
 
CRGBPalette16 getWavePalette ()
 
void loop ()
 
UIDropdown luminanceFunction ("Luminance Function", easeInfo)
 
UIGroup noiseGroup ("Noise Controls", noiseScale, noiseSpeed, paletteDropdown)
 
UISlider noiseScale ("Noise Scale", 100, 10, 200, 5)
 
UISlider noiseSpeed ("Noise Speed", 4, 1, 100, 1)
 
UIDropdown paletteDropdown ("Color Palette", paletteOptions)
 
UIGroup pointGraphicsGroup ("Point Graphics Mode", speed, positionCoarse, positionFine, positionExtraFine, autoAdvance)
 
UISlider positionCoarse ("Position Coarse (10x)", 0.0f, 0.0f, 1.0f, 0.01f)
 
UISlider positionExtraFine ("Position Extra Fine (0.1x)", 0.0f, 0.0f, 0.01f, 0.0001f)
 
UISlider positionFine ("Position Fine (1x)", 0.0f, 0.0f, 0.1f, 0.001f)
 
void processWaveAutoTrigger (uint32_t now)
 
UIGroup renderGroup ("Render Options", renderModeDropdown, splatRendering, allWhite, brightness)
 
UIDropdown renderModeDropdown ("Render Mode", renderModeOptions)
 
UIDropdown saturationFunction ("Saturation Function", easeInfo)
 
void setup ()
 
UISlider speed ("Speed", 0.1f, 0.01f, 1.0f, 0.01f)
 
UICheckbox splatRendering ("Splat Rendering", true)
 
void triggerWaveRipple ()
 
UICheckbox waveAutoTrigger ("Wave Auto Trigger", true)
 
UISlider waveBlurAmount ("Wave Blur Amount", 50, 0, 172, 1)
 
UISlider waveBlurPasses ("Wave Blur Passes", 1, 1, 10, 1)
 
UISlider waveDampening ("Wave Dampening", 9.1f, 0.0f, 20.0f, 0.1f)
 
UIGroup waveGroup ("Wave Controls", waveSpeed, waveDampening, waveHalfDuplex, waveAutoTrigger, waveTriggerSpeed, waveTriggerButton, wavePalette, waveBlurAmount, waveBlurPasses)
 
UICheckbox waveHalfDuplex ("Wave Half Duplex", true)
 
UINumberField wavePalette ("Wave Palette", 0, 0, 2)
 
UISlider waveSpeed ("Wave Speed", 0.03f, 0.0f, 1.0f, 0.01f)
 
UIButton waveTriggerButton ("Trigger Wave")
 
UISlider waveTriggerSpeed ("Wave Trigger Speed", 0.5f, 0.0f, 1.0f, 0.01f)
 

Variables

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