diff --git a/src/main.rs b/src/main.rs index f1692d7..d22b699 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,7 +5,7 @@ use std::sync::{Arc, RwLock}; use std::thread; use rs_ws281x::{RawColor, Controller, ControllerBuilder, ChannelBuilder, StripType}; -pub const LED_SIZE: i32 = 450; +pub const LED_SIZE: usize = 450; pub const BRIGHTNESS: u8 = 255; fn main() { @@ -13,18 +13,20 @@ fn main() { let lock = Arc::new(RwLock::new([p; LED_SIZE])); let lock_c = Arc::clone(&lock); - let controller = ControllerBuilder::new() - .channel(ChannelBuilder::new() + thread::spawn(move || { + let mut controller: Controller = ControllerBuilder::new() + .channel(0, ChannelBuilder::new() .pin(18) - .count(LED_SIZE) + .count(i32::try_from(LED_SIZE).unwrap()) .strip_type(StripType::Ws2812) .brightness(BRIGHTNESS) .build() ) - .build(); - thread::spawn(move || loop { - let lights = lock_c.read().unwrap(); - run_lights(&controller, &lights); + .build().unwrap(); + loop { + let lights = lock_c.read().unwrap(); + run_lights(&mut controller, &lights); + } }); let mut x: u8 = 0; loop { diff --git a/src/util/lights.rs b/src/util/lights.rs index 821acb3..8d7d377 100644 --- a/src/util/lights.rs +++ b/src/util/lights.rs @@ -2,14 +2,14 @@ use rs_ws281x::RawColor; use rs_ws281x::Controller; use rs_ws281x::WS2811Error; -pub fn run_lights(controller: &Controller, values: &[RawColor; crate::LED_SIZE]) -> Result<(), WS2811Error> { +pub fn run_lights(controller: &mut Controller, values: &[RawColor; crate::LED_SIZE]) -> Result<(), WS2811Error> { // println!("Value: {:?}", strip[0]); let channels: Vec = controller.channels(); let mut strip = controller.leds_mut(channels[0]); - for x in 0..strip.len() { + for i in 0..strip.len() { strip[i] = values[i]; } controller.render(); controller.wait() -} \ No newline at end of file +}