Advertisement
Guest User

Sled Raspberry Pi Setup

a guest
Nov 10th, 2024
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 1.40 KB | None | 0 0
  1. use rs_ws281x::{ChannelBuilder, Controller, ControllerBuilder};
  2. use sled::{color::Srgb, Sled};
  3.  
  4. mod effects;
  5. use effects::*; // see https://github.com/DavJCosby/rasp-pi-setup/tree/master/src/effects
  6.  
  7. fn main() {
  8.     let sled = Sled::new("./config.yap").unwrap();
  9.     let num_leds = sled.num_leds();
  10.    
  11.     let mut driver = ripples::build_driver();
  12.     driver.mount(sled);
  13.  
  14.     let mut gpio_controller = construct_gpio_controller(num_leds);
  15.    
  16.     loop {
  17.         driver.step();
  18.         let colors = driver.colors();
  19.         update_gpio(&mut gpio_controller, colors);
  20.     }
  21. }
  22.  
  23. fn construct_gpio_controller(num_leds: usize) -> Controller {
  24.     ControllerBuilder::new()
  25.        
  26.         .channel(
  27.             0,
  28.             ChannelBuilder::new()
  29.                 .pin(18)
  30.                 .count(num_leds as i32)
  31.                 .strip_type(rs_ws281x::StripType::Ws2811Gbr)
  32.                 .brightness(255)
  33.                 .build(),
  34.         )
  35.         .build()
  36.         .unwrap()
  37. }
  38.  
  39. fn update_gpio<'a>(controller: &mut Controller, colors: impl Iterator<Item = &'a Srgb>) {
  40.     let leds = controller.leds_mut(0);
  41.  
  42.     let mut i = 0;
  43.     for color in colors {
  44.         leds[i] = [
  45.             (color.red * 255.0) as u8,
  46.             (color.green * 255.0) as u8,
  47.             (color.blue * 255.0) as u8,
  48.             0,
  49.         ];
  50.         i += 1;
  51.     }
  52.  
  53.     controller.render().unwrap();
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement