I needed a small LED controller for lighting up a project. I designed this to have a simple single button configuration interface.
/*
* WS2812b LED Controller with single button interface
*
* Hold button for 1000ms to cycle through states
* Onboard LED blinks to indicate selected state
*
* State 1: LED Effect
* click = Next LED Effect
* double_click = Previous LED Effect
*
* State 2: Brightness
* click = Increase Brightness
* double_click = Decrease Brightness
*
* State 3: Speed
* click = Increase Speed
* double_click = Decrease Speed
*
* State 4: Color
* click = Increment Color + 20
* double_click = Decrement Color - 1
*
* State 5: Length Add
* click = Add 1 LED
* double_click = Add 10 LEDs
*
* State 6: Length Delete
* click = Delete 1 LED
* double_click = Delete 10 LED
*
* Hold button for 5000ms to save settings to EEPROM
*/
(To Do)
I used the really awesome Adafruit NeoPixel library, WS2812FX and OneButton libraries with a few adjustments.
- Static - No blinking. Just plain old static light.
- Blink - Normal blinking. 50% on/off time.
- Breath - Does the "standby-breathing" of well known i-Devices. Fixed Speed.
- Color Wipe - Lights all LEDs after each other up. Then turns them in that order off. Repeat.
- Color Wipe Random - Turns all LEDs after each other to a random color. Then starts over with another color.
- Random Color - Lights all LEDs in one random color up. Then switches them to the next random color.
- Single Dynamic - Lights every LED in a random color. Changes one random LED after the other to another random color.
- Multi Dynamic - Lights every LED in a random color. Changes all LED at the same time to new random colors.
- Rainbow - Cycles all LEDs at once through a rainbow.
- Rainbow Cycle - Cycles a rainbow over the entire string of LEDs.
- Scan - Runs a single pixel back and forth.
- Dual Scan - Runs two pixel back and forth in opposite directions.
- Fade - Fades the LEDs on and (almost) off again.
- Theater Chase - Theatre-style crawling lights. Inspired by the Adafruit examples.
- Theater Chase Rainbow - Theatre-style crawling lights with rainbow effect. Inspired by the Adafruit examples.
- Running Lights - Running lights effect with smooth sine transition.
- Twinkle - Blink several LEDs on, reset, repeat.
- Twinkle Random - Blink several LEDs in random colors on, reset, repeat.
- Twinkle Fade - Blink several LEDs on, fading out.
- Twinkle Fade Random - Blink several LEDs in random colors on, fading out.
- Sparkle - Blinks one LED at a time.
- Flash Sparkle - Lights all LEDs in the selected color. Flashes single white pixels randomly.
- Hyper Sparkle - Like flash sparkle. With more flash.
- Strobe - Classic Strobe effect.
- Strobe Rainbow - Classic Strobe effect. Cycling through the rainbow.
- Multi Strobe - Strobe effect with different strobe count and pause, controlled by speed setting.
- Blink Rainbow - Classic Blink effect. Cycling through the rainbow.
- Chase White - Color running on white.
- Chase Color - White running on color.
- Chase Random - White running followed by random color.
- Chase Rainbow - White running on rainbow.
- Chase Flash - White flashes running on color.
- Chase Flash Random - White flashes running, followed by random color.
- Chase Rainbow White - Rainbow running on white.
- Chase Blackout - Black running on color.
- Chase Blackout Rainbow - Black running on rainbow.
- Color Sweep Random - Random color introduced alternating from start and end of strip.
- Running Color - Alternating color/white pixels running.
- Running Red Blue - Alternating red/blue pixels running.
- Running Random - Random colored pixels running.
- Larson Scanner - K.I.T.T.
- Comet - Firing comets from one end.
- Fireworks - Firework sparks.
- Fireworks Random - Random colored firework sparks.
- Merry Christmas - Alternating green/red pixels running.
- Fire Flicker - Fire flickering effect. Like in harsh wind.
- Fire Flicker (soft) - Fire flickering effect. Runs slower/softer.
- Fire Flicker (intense) - Fire flickering effect. More range of color.
- Dual Color Wipe In/Out - Light from edges in to middle, then turn off in reverse.
- Dual Color Wipe In/In - Light from edges in to middle, then turn off in same order.
- Dual Color Wipe Out/Out - Light from middle to edges, then turn off in same order.
- Dual Color Wipe Out/In - Light from middle to edges, then turn off in reverse.
- Circus Combustus - Alternating white/red/black pixels running.