rustyfarian-esp-idf-ws2812 0.6.0

WS2812 (NeoPixel) LED driver using ESP-IDF RMT peripheral
docs.rs failed to build rustyfarian-esp-idf-ws2812-0.6.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.

rustyfarian-esp-idf-ws2812

crates.io version docs.rs docs

WS2812 (NeoPixel) LED driver using the ESP-IDF RMT peripheral.

Drives WS2812/NeoPixel addressable LEDs on any ESP32 variant that supports RMT via ESP-IDF. Provides set_pixel and set_pixels_slice for direct use, and implements SmartLedsWrite for the smart-leds ecosystem. Uses anyhow::Result for error propagation. Blocking-only; for bare-metal async support see rustyfarian-esp-hal-ws2812.

Part of the rustyfarian-ws2812 workspace alongside rustyfarian-esp-hal-ws2812 (bare-metal, no_std), rustyfarian-avr-ws2812 (AVR), and the pure-logic crates ferriswheel, pennant, and bunting.

Example

use rustyfarian_esp_idf_ws2812::Ws2812Rmt;
use rgb::RGB8;

let mut led = Ws2812Rmt::new(peripherals.pins.gpio8)?;

led.set_pixel(RGB8::new(255, 0, 0))?;

let colors = [RGB8::new(255, 0, 0), RGB8::new(0, 255, 0), RGB8::new(0, 0, 255)];
led.set_pixels_slice(&colors)?;

Supported Boards

Any ESP32 variant with RMT support via ESP-IDF. Ws2812Rmt::new() uses a default channel configuration tuned for ESP32-C3/C6 (48-symbol RMT blocks, 2 TX channels). For classic ESP32, S2, or S3 use new_with_channel_config with memory_block_symbols: 64.

Board GPIO
ESP32-C3-DevKit-Rust-1 GPIO2
ESP32-C3-DevKitC-02 GPIO8
ESP32-C6-DevKitC-1 GPIO8
Classic ESP32 / WROOM-32 any RMT-capable GPIO

Features

Feature Default Description
pennant yes implements pennant::StatusLed
smart-leds no enables smart-leds brightness and gamma adapters

Documentation

Full API docs at docs.rs/rustyfarian-esp-idf-ws2812.

License

Dual-licensed under MIT or Apache-2.0.

Changelog

See the workspace CHANGELOG for release notes across all crates.