holiday_lights/hello_gradient/src/bin/mardi_gras.rs

43 lines
1020 B
Rust

#![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 = 300;
#[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);
}
}