From 5a741d870b46fdff58509e95c080d5241eb9dc68 Mon Sep 17 00:00:00 2001 From: Tangent 128 Date: Mon, 28 Oct 2019 00:03:49 -0400 Subject: [PATCH] Add mardi_gras pattern --- hello_gradient/src/bin/mardi_gras.rs | 42 ++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 hello_gradient/src/bin/mardi_gras.rs diff --git a/hello_gradient/src/bin/mardi_gras.rs b/hello_gradient/src/bin/mardi_gras.rs new file mode 100644 index 0000000..6841330 --- /dev/null +++ b/hello_gradient/src/bin/mardi_gras.rs @@ -0,0 +1,42 @@ +#![no_std] +#![no_main] + +use lights::{ + gamma::correct, + rgb::{linear_gradient, Rgb}, + HardwareRgb, PixelIterator, +}; +use lights_hal::{boot, delay, entry}; + +const YELLOW: Rgb = Rgb(255, 255, 0); +const GREEN: Rgb = Rgb(100, 255, 0); +const PURPLE: Rgb = Rgb(196, 0, 255); + +const SEGMENT_LEN: usize = 50; +const BUFFER_LEN: usize = 200; + +#[entry] +fn main() -> ! { + let mut lights = boot(); + lights.heartbeat(); + + let mut gradient = linear_gradient(YELLOW, GREEN, SEGMENT_LEN) + .chain(linear_gradient(GREEN, PURPLE, SEGMENT_LEN)) + .chain(linear_gradient(PURPLE, YELLOW, SEGMENT_LEN)) + .cycle(); + + let mut buffer = [HardwareRgb(255, 255, 0); BUFFER_LEN]; + loop { + // blink light to demonstrate loop is still running + lights.heartbeat(); + + for (i, pixel) in gradient.clone().take(BUFFER_LEN).enumerate() { + buffer[i] = correct(&pixel); + } + + buffer.iter().render_to(&mut lights); + + gradient.next(); + delay(500_000); + } +}