#![no_std] #![no_main] use core::iter::repeat; use lights::{ gamma::GammaCorrector, PixelIterator, rgb::{ gray, linear_gradient, Rgb } }; use lights_hal::{boot, delay, entry}; #[entry] fn main() -> ! { let mut lights = GammaCorrector(boot()); let red = Rgb(255, 0, 0); let yellow = Rgb(255, 255, 0); let green = Rgb(0, 255, 0); let teal = Rgb(0, 128, 255); let purple = Rgb(128, 0, 255); let segment_length = 60; let mut gradient = linear_gradient(red, yellow, segment_length) .chain(linear_gradient(yellow, green, segment_length)) .chain(linear_gradient(green, teal, segment_length)) .chain(linear_gradient(teal, purple, segment_length)) .chain(linear_gradient(purple, gray(0), segment_length)) .chain(repeat(gray(255)).take(60)).cycle(); loop { gradient.clone().take(60).render_to(&mut lights); gradient.next(); delay(1_000_000); } }