跳转到内容

ESP32 RMT LED 灯带

这是一个使用 ESP32 RMT 外设驱动大多数可寻址 LED 灯带的组件。

NOTE

ESP32-C2 和 ESP32-C61 没有 RMT 硬件,不受此组件支持。

light:
- platform: esp32_rmt_led_strip
rgb_order: GRB
pin: GPIOXX
num_leds: 30
chipset: ws2812
name: "My Light"
  • pin (必需, 引脚模式): 灯的数据线引脚。

  • num_leds (必需, 整数): 灯带中的 LED 数量。

  • chipset (必需, 枚举): 所用芯片组的名称;决定信号时序。如果手动指定时序则不需要。

    • WS2811
    • WS2812
    • SK6812
    • APA106
    • SM16703
  • rgb_order (必需, 字符串): 灯带的 RGB 顺序。

    • RGB
    • RBG
    • GRB
    • GBR
    • BGR
    • BRG
  • is_rgbw (可选, 布尔值): 如果灯带是 RGBW,设置为 true。默认为 false

  • is_wrgb (可选, 布尔值): 如果灯带是 WRGB,设置为 true。默认为 false

  • max_refresh_rate (可选, 时间): 用于限制灯光每秒可处理的命令数量的时间间隔。例如,16ms 将限制灯光的刷新率约为 60Hz。默认为在灯光更改时尽快发送命令。

  • use_psram (可选, 布尔值): 设置为 false 以强制使用内部 RAM 分配,即使您启用了 PSRAM 组件。如果您的 LED 灯带出现闪烁等问题,这可能很有用。默认为 true

  • rmt_symbols (可选, 整数): 当启用 use_dma 时,设置驱动程序内部 DMA 缓冲区的大小。当 DMA 禁用时,它指定分配给组件的 RMT 内存量。RMT 内存在所有组件之间共享,应以块大小的倍数分配。在 ESP32ESP32-S2 变体上,RMT 内存在 RX 和 TX 组件之间共享。在其他变体上,RX 和 TX 有专用的 RMT 内存。

ESP32 变体可用内存块大小
ESP32512 符号64 符号
ESP32-C396 符号48 符号
ESP32-C596 符号48 符号
ESP32-C696 符号48 符号
ESP32-H296 符号48 符号
ESP32-P4192 符号48 符号
ESP32-S2256 符号64 符号
ESP32-S3192 符号48 符号
  • use_dma (可选, 布尔值): 在支持 DMA 的变体上启用 DMA。如果启用,rmt_symbols 控制 DMA 缓冲区大小,可以设置为较大的值。

  • 所有其他选项来自灯光组件

如果您知道时序并且您的芯片组未在上面设置,可以使用这些。如果您有新的特定芯片组,请考虑向代码库添加支持并将其添加到上面的列表中。

  • bit0_high (可选, 时间): 0 位数据线保持高电平的时间。

  • bit0_low (可选, 时间): 0 位数据线保持低电平的时间。

  • bit1_high (可选, 时间): 1 位数据线保持高电平的时间。

  • bit1_low (可选, 时间): 1 位数据线保持低电平的时间。

  • reset_high (可选, 时间): 写入状态后数据线保持高电平的时间。默认为 0 us

  • reset_low (可选, 时间): 写入状态后数据线保持低电平的时间。默认为 0 us