1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
//! A library that generates effects for use with addressable LEDs.
//! Currently it only implements 1 dimensional effects for use with a single strip of LEDs.
//!
//! # Usage
//!
//! Each effect is implemented as an iterator that returns a vector of [Srgb] colours.
//! The vector returned is the same length as the number of LEDs in the strip (supplied when instantiating the effect).
//! This vector can then be passed to the LED strip driver.
//!
//! The [strip::EffectIterator] trait is implemented for each effect, so they can be used as iterators. The iterators will currently all loop forever.
//!
//! # Effects
//! | Name | Description |
//! | ---- | ----------- |
//! | [strip::Bounce] | The bounce effect will generate a number of balls that bounce up and down the strip |
//! | [strip::Breathe] | The breathe effect will generate a single colour that fades in and out |
//! | [strip::Christmas] | (WIP) Has a green background with random red, blue and gold sparkles |
//! | [strip::Collision] | Generates two particles that can collide and bounce or shatter |
//! | [strip::Cycle] | Rotates around the HSV colour space |
//! | [strip::Cylon] | Generates the cylon eye effect |
//! | [strip::Fire] | Generates an effect like a flickering flame |
//! | [strip::Meteor] | Generates a meteor that goes down the strip trailing bits of fading debris |
//! | [strip::Morse] | Converts a string into a series of dots and dashes as per Morse code formatting |
//! | [strip::ProgressBar] | (WIP) Signals progress
//! | [strip::Rainbow] | Generates a rainbow effect |
//! | [strip::RunningLights] | Generates a running lights effect |
//! | [strip::SnowSparkle] | Generates random sparkles |
//! | [strip::Strobe] | Strobe light/blinder effect |
//! | [strip::Timer] | Counts down for the given duration |
//! | [strip::Twinkle] | Generates random twinkles |
//! | [strip::Wipe] | Generates a wipe effect |
//!
//!
//! # Example
//!
//! ```rust
//! use smart_led_effects::{
//! strip::{self, EffectIterator},
//! Srgb,
//! };
//!
//!
//! const COUNT: usize = 55;
//! let effect = strip::Rainbow::new(COUNT, None);
//!
//! {
//! let pixels = effect.next().unwrap();
//!
//! // show pixels
//!
//! thread::sleep(Duration::from_millis(10));
//! }
//!
pub mod strip;
mod utils;
pub use palette::Srgb;