Crate blinkt [−] [src]
A Rust library that provides an interface for the Pimoroni Blinkt!, and any similar APA102 or SK9822 strips or boards, on a Raspberry Pi.
Blinkt accesses the BCM283x GPIO peripheral either through /dev/gpiomem
(preferred) or /dev/mem
. Both the original APA102 and the SK9822 clone
are supported. The APA102 RGB LED/driver ICs are referred to as pixels
throughout the code and documentation.
Each pixel has a red, green and blue LED with possible values between 0-255. Additionally, the overall brightness of each pixel can be set to 0.0-1.0, which is converted to a 5-bit value.
Blinkt stores all color and brightness changes in a local buffer. Use
show()
to send the buffered values to the pixels.
Examples
A complete example that cycles all pixels through red, green and blue.
extern crate blinkt; use std::{thread, mem}; use std::time::Duration; use blinkt::Blinkt; fn main() { let mut blinkt = Blinkt::new().unwrap(); let (red, green, blue) = (&mut 255, &mut 0, &mut 0); loop { blinkt.set_all_pixels(*red, *green, *blue); blinkt.show(); thread::sleep(Duration::from_millis(250)); mem::swap(red, green); mem::swap(red, blue); } }
By default, all pixels are cleared when Blinkt goes out of
scope. Use set_clear_on_drop(false)
to disable this behavior. Note that
drop methods aren't called when a program is abnormally terminated (for
instance when a SIGINT isn't caught).
use blinkt::Blinkt; let mut blinkt = Blinkt::new().unwrap(); blinkt.set_clear_on_drop(false); for n in 0..8 { blinkt.set_pixel(n, 36 * n as u8, 0, 255 - (36 * n as u8)); } blinkt.show();
Structs
Blinkt |
Interface for a Blinkt! or any similar APA102 or SK9822 strips/boards. |
Enums
Error |
Errors that can occur when creating a new Blinkt. |
GPIOError |
Errors that can occur when accessing the GPIO peripheral. |
Type Definitions
Result |
Result type returned from methods that can have |