diff --git a/harrogate/Cargo.toml b/harrogate/Cargo.toml index 2779039..6f06af1 100644 --- a/harrogate/Cargo.toml +++ b/harrogate/Cargo.toml @@ -29,6 +29,8 @@ halloween-2023 = ["replace-default"] new-years-eve-2020 = ["replace-default"] november-2020 = ["replace-default"] +door-light-orange = ["replace-default"] + [dependencies] house = { path = "../house" } itsybitsy_m0 = "0.10" diff --git a/harrogate/src/door_light_orange.rs b/harrogate/src/door_light_orange.rs new file mode 100644 index 0000000..ca7fda2 --- /dev/null +++ b/harrogate/src/door_light_orange.rs @@ -0,0 +1,41 @@ +use super::delay; +use core::iter::repeat; +use house::Harrogate; +use lights::rgb::{linear_gradient, Rgb}; +use lights::{HardwareRgb, Lights}; + +const OFF: Rgb = Rgb(0, 0, 0); +const ON: Rgb = Rgb(255, 192, 128); + +/* + * 20 fade + 25 ON + 20 fade = 65 dots + * 85 OFF + 65 door = 150 dots + */ + +#[allow(dead_code)] +#[inline(always)] +pub fn run(lights: &mut impl Lights) -> ! { + let mut i = 0; + loop { + i = match i { + i if i < 84 => i + 1, + _ => 0, + }; + + let void = (0..).map(|j| if i == j { OFF } else { OFF }); + + let door_highlight = linear_gradient(OFF, ON, 20) + .chain(repeat(ON).take(25)) + .chain(linear_gradient(ON, OFF, 20)); + + let pattern = Harrogate { + porch_back: void.take(85).chain(door_highlight), + porch_front: repeat(OFF), + }; + + pattern.render_to(lights); + + delay(48_000_000); + //lights.latch(); + } +} diff --git a/harrogate/src/main.rs b/harrogate/src/main.rs index a695ef4..592eb60 100644 --- a/harrogate/src/main.rs +++ b/harrogate/src/main.rs @@ -20,6 +20,7 @@ mod halloween_2023; mod november_2020; mod new_years_eve_2020; mod door_light; +mod door_light_orange; #[entry] fn main() -> ! { @@ -69,4 +70,7 @@ fn main() -> ! { #[cfg(not(feature = "replace-default"))] door_light::run(&mut lights); + + #[cfg(feature = "door-light-orange")] + door_light_orange::run(&mut lights); }