pub struct LedPixelEsp32Rmt<'d, CSmart, CDev>where
CDev: LedPixelColor + From<CSmart>,{ /* private fields */ }
Available on crate feature
smart-leds-trait
only.Expand description
ws2812-like smart led driver wrapper providing smart-leds API
This is a generalization to handle variants such as SK6812-RGBW 4-color LED.
Use Ws2812Esp32Rmt
for typical RGB LED (WS2812B/SK6812) consisting of 8-bit GRB (total 24-bit pixel).
§Examples
#[cfg(not(target_vendor = "espressif"))]
use ws2812_esp32_rmt_driver::mock::esp_idf_hal;
use esp_idf_hal::peripherals::Peripherals;
use smart_leds::{SmartLedsWrite, White};
use ws2812_esp32_rmt_driver::{LedPixelEsp32Rmt, RGBW8};
use ws2812_esp32_rmt_driver::driver::color::LedPixelColorGrbw32;
let peripherals = Peripherals::take().unwrap();
let led_pin = peripherals.pins.gpio26;
let channel = peripherals.rmt.channel0;
let mut ws2812 = LedPixelEsp32Rmt::<RGBW8, LedPixelColorGrbw32>::new(channel, led_pin).unwrap();
let pixels = std::iter::repeat(RGBW8 {r: 0, g: 0, b: 0, a: White(30)}).take(25);
ws2812.write(pixels).unwrap();
Implementations§
Source§impl<'d, CSmart, CDev> LedPixelEsp32Rmt<'d, CSmart, CDev>where
CDev: LedPixelColor + From<CSmart>,
impl<'d, CSmart, CDev> LedPixelEsp32Rmt<'d, CSmart, CDev>where
CDev: LedPixelColor + From<CSmart>,
Sourcepub fn new<C: RmtChannel>(
channel: impl Peripheral<P = C> + 'd,
pin: impl Peripheral<P = impl OutputPin> + 'd,
) -> Result<Self, Ws2812Esp32RmtDriverError>
pub fn new<C: RmtChannel>( channel: impl Peripheral<P = C> + 'd, pin: impl Peripheral<P = impl OutputPin> + 'd, ) -> Result<Self, Ws2812Esp32RmtDriverError>
Create a new driver wrapper.
channel
shall be different between different pin
.
Sourcepub fn new_with_rmt_driver(
tx: TxRmtDriver<'d>,
) -> Result<Self, Ws2812Esp32RmtDriverError>
pub fn new_with_rmt_driver( tx: TxRmtDriver<'d>, ) -> Result<Self, Ws2812Esp32RmtDriverError>
Create a new driver wrapper.
Source§impl<'d, CSmart, const N: usize, const R_ORDER: usize, const G_ORDER: usize, const B_ORDER: usize, const W_ORDER: usize> LedPixelEsp32Rmt<'d, CSmart, LedPixelColorImpl<N, R_ORDER, G_ORDER, B_ORDER, W_ORDER>>where
LedPixelColorImpl<N, R_ORDER, G_ORDER, B_ORDER, W_ORDER>: From<CSmart>,
impl<'d, CSmart, const N: usize, const R_ORDER: usize, const G_ORDER: usize, const B_ORDER: usize, const W_ORDER: usize> LedPixelEsp32Rmt<'d, CSmart, LedPixelColorImpl<N, R_ORDER, G_ORDER, B_ORDER, W_ORDER>>where
LedPixelColorImpl<N, R_ORDER, G_ORDER, B_ORDER, W_ORDER>: From<CSmart>,
Sourcepub fn write_nocopy<T, I>(
&mut self,
iterator: T,
) -> Result<(), Ws2812Esp32RmtDriverError>
pub fn write_nocopy<T, I>( &mut self, iterator: T, ) -> Result<(), Ws2812Esp32RmtDriverError>
Writes pixel data from a color sequence to the driver without data copy
§Errors
Returns an error if an RMT driver error occurred.
Trait Implementations§
Source§impl<'d, CSmart, CDev> SmartLedsWrite for LedPixelEsp32Rmt<'d, CSmart, CDev>where
CDev: LedPixelColor + From<CSmart>,
Available on crate feature alloc
only.
impl<'d, CSmart, CDev> SmartLedsWrite for LedPixelEsp32Rmt<'d, CSmart, CDev>where
CDev: LedPixelColor + From<CSmart>,
Available on crate feature
alloc
only.Auto Trait Implementations§
impl<'d, CSmart, CDev> Freeze for LedPixelEsp32Rmt<'d, CSmart, CDev>
impl<'d, CSmart, CDev> RefUnwindSafe for LedPixelEsp32Rmt<'d, CSmart, CDev>where
CSmart: RefUnwindSafe,
CDev: RefUnwindSafe,
impl<'d, CSmart, CDev> Send for LedPixelEsp32Rmt<'d, CSmart, CDev>
impl<'d, CSmart, CDev> Sync for LedPixelEsp32Rmt<'d, CSmart, CDev>where
CSmart: Sync,
impl<'d, CSmart, CDev> Unpin for LedPixelEsp32Rmt<'d, CSmart, CDev>
impl<'d, CSmart, CDev> !UnwindSafe for LedPixelEsp32Rmt<'d, CSmart, CDev>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
Source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
Casts the value.
Source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
Source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
Casts the value.
Source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
Source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
Casts the value.
Source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
Source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
Casts the value.
Source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
Source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
Casts the value.
Source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
Source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
Casts the value.
Source§impl<T> UnwrappedAs for T
impl<T> UnwrappedAs for T
Source§fn unwrapped_as<Dst>(self) -> Dstwhere
T: UnwrappedCast<Dst>,
fn unwrapped_as<Dst>(self) -> Dstwhere
T: UnwrappedCast<Dst>,
Casts the value.
Source§impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere
Src: UnwrappedCast<Dst>,
impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere
Src: UnwrappedCast<Dst>,
Source§fn unwrapped_cast_from(src: Src) -> Dst
fn unwrapped_cast_from(src: Src) -> Dst
Casts the value.
Source§impl<T> WrappingAs for T
impl<T> WrappingAs for T
Source§fn wrapping_as<Dst>(self) -> Dstwhere
T: WrappingCast<Dst>,
fn wrapping_as<Dst>(self) -> Dstwhere
T: WrappingCast<Dst>,
Casts the value.
Source§impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere
Src: WrappingCast<Dst>,
impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere
Src: WrappingCast<Dst>,
Source§fn wrapping_cast_from(src: Src) -> Dst
fn wrapping_cast_from(src: Src) -> Dst
Casts the value.