From f1134b0687baeec6431608967868bd26ad2ddd84 Mon Sep 17 00:00:00 2001 From: Richard Allen Date: Sun, 21 Jan 2024 18:52:38 -0600 Subject: [PATCH] fix(led_strip): Extend reset to support WS2812B-V5 WS2812B-V5 requires >280 microsecond reset time. When led_strip drives them with 50 microsecond reset time, about 1/3 of certain transmission patterns would cause an LED to fail to reset, leading to duplicated colors further down the led strip. --- led_strip/idf_component.yml | 2 +- led_strip/src/led_strip_rmt_encoder.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/led_strip/idf_component.yml b/led_strip/idf_component.yml index 1fd9b83ee5..e0e3fe375c 100644 --- a/led_strip/idf_component.yml +++ b/led_strip/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.5.2" +version: "2.5.3" description: Driver for Addressable LED Strip (WS2812, etc) url: https://github.com/espressif/idf-extra-components/tree/master/led_strip dependencies: diff --git a/led_strip/src/led_strip_rmt_encoder.c b/led_strip/src/led_strip_rmt_encoder.c index d352ac07f6..2e6f57019a 100644 --- a/led_strip/src/led_strip_rmt_encoder.c +++ b/led_strip/src/led_strip_rmt_encoder.c @@ -123,7 +123,7 @@ esp_err_t rmt_new_led_strip_encoder(const led_strip_encoder_config_t *config, rm rmt_copy_encoder_config_t copy_encoder_config = {}; ESP_GOTO_ON_ERROR(rmt_new_copy_encoder(©_encoder_config, &led_encoder->copy_encoder), err, TAG, "create copy encoder failed"); - uint32_t reset_ticks = config->resolution / 1000000 * 50 / 2; // reset code duration defaults to 50us + uint32_t reset_ticks = config->resolution / 1000000 * 280 / 2; // reset code duration defaults to 280us to accomodate WS2812B-V5 led_encoder->reset_code = (rmt_symbol_word_t) { .level0 = 0, .duration0 = reset_ticks,