Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use rs_ws281x::{ChannelBuilder, Controller, ControllerBuilder};
- use sled::{color::Srgb, Sled};
- mod effects;
- use effects::*; // see https://github.com/DavJCosby/rasp-pi-setup/tree/master/src/effects
- fn main() {
- let sled = Sled::new("./config.yap").unwrap();
- let num_leds = sled.num_leds();
- let mut driver = ripples::build_driver();
- driver.mount(sled);
- let mut gpio_controller = construct_gpio_controller(num_leds);
- loop {
- driver.step();
- let colors = driver.colors();
- update_gpio(&mut gpio_controller, colors);
- }
- }
- fn construct_gpio_controller(num_leds: usize) -> Controller {
- ControllerBuilder::new()
- .channel(
- 0,
- ChannelBuilder::new()
- .pin(18)
- .count(num_leds as i32)
- .strip_type(rs_ws281x::StripType::Ws2811Gbr)
- .brightness(255)
- .build(),
- )
- .build()
- .unwrap()
- }
- fn update_gpio<'a>(controller: &mut Controller, colors: impl Iterator<Item = &'a Srgb>) {
- let leds = controller.leds_mut(0);
- let mut i = 0;
- for color in colors {
- leds[i] = [
- (color.red * 255.0) as u8,
- (color.green * 255.0) as u8,
- (color.blue * 255.0) as u8,
- 0,
- ];
- i += 1;
- }
- controller.render().unwrap();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement