Skip to content

DavidVentura/ws2812-esp32-rmt-driver

This branch is 65 commits behind cat-in-136/ws2812-esp32-rmt-driver:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ecb9db9 · Feb 3, 2024
Feb 2, 2024
Dec 31, 2023
Dec 30, 2023
Jan 1, 2024
Dec 10, 2022
Feb 3, 2024
Feb 12, 2022
Jan 1, 2024
Jan 7, 2024
Feb 12, 2022
Feb 12, 2022

Repository files navigation

ws2812-esp32-rmt-driver

A rust driver library to control WS2812B (NeoPixel) RGB LED pixels/strips using ESP32 RMT (Remote Control) module.

Rust ws2812-esp32-rmt-driver at crates.io API

By disabling the carrier generator of the RMT's transmitter , it can be used as just a PWM signal generator for WS2812B data signal. This control way is the same as major Arduino/C++ library such as FastLED, Adafruit_NeoPixel.

The RMT (Remote Control) module is specific to ESP32. Hence, it can be used only for ESP32 SoC.

This library also support SK6812-RGBW 4-color LED pixels/strips (smart-leds API only).

Usage

Install rust with Xtensa support. Refer esp-rs/rust-build for the setup instruction.

Add following dependency to your Cargo.toml. Note that version is stripped in this example but it is recommended to specify version explicitly in your project.

[dependencies]
esp-idf-sys = { version = "*", features = ["binstart"] }
esp-idf-hal = "*"
smart-leds = "*"

ws2812-esp32-rmt-driver = "*"

[build-dependencies]
embuild = "*"
anyhow = "1"

Refer examples/ directory for the source code.

Make ensure esp toolchain is available and xtensa-esp32-elf-clang is in your $PATH. And then, run as follows

$ cargo build
$ cargo espflash

Features

  • features = ["embedded-graphics-core", "unstable"] to enable embedded-graphics API ws2812_esp32_rmt_driver::lib_embedded_graphics.
  • features = ["smart-leds"] or default to enable minimum smart-leds API.
  • features = ["smart-leds", "unstable"] to enable detailed smart-leds API ws2812_esp32_rmt_driver::lib_smart_leds.

Development

To run the test locally, specify the local toolchain (stable, nightly, etc...) and target explicitly and disable example builds (specify --lib) .

$ cargo +stable test --target x86_64-unknown-linux-gnu --lib

About

WS2812 driver using ESP32 RMT for Rust

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%