Crates.io | ws2812-blocking-spi |
lib.rs | ws2812-blocking-spi |
version | 0.2.0 |
source | src |
created_at | 2022-04-09 16:42:21.063736 |
updated_at | 2022-04-15 15:02:58.367867 |
description | Driver based on embedded_hal::blocking::spi::Write for WS2812 |
homepage | |
repository | https://github.com/andy31415/ws2812-blocking-spi-rs |
max_upload_size | |
id | 564811 |
size | 5,123 |
This crate adds an implementation using embedded_hal::spi::blocking
for smart-leds
The ws2821 crate that is part of the smart-leds project is using a
FullDuplex
implementation of SPI which is not implemented on
all platforms.
This crate pre-generates constants for all 8-bit patterns required to send to LEDs and this adds a 1KB flash space overhead.
use ws2812_blocking_spi::Ws2812BlockingWriter;
// Requires a SPI interface. LEDs data pin should be
// connected to the MOSI pin (master-in-slave-out)
let spi: embedded_hal::blocking::spi::Write<u8> = /*... */;
// setup some data to write
let mut data = [RGB8::default(); 3];
data[0] = [0xFF_u8, 0_u8, 0_u8].into(); // Full RED
data[1] = [0_u8, 0xFF_u8, 0_u8].into(); // Full GREEN
data[2] = [0_u8, 0_u8, 0xFF_u8].into(); // Full BLUE
// Create a writer
let mut leds = Ws2812BlockingWriter::new(spi);
// does the data write
leds.write(data.iter().cloned());