Remap 0% brightness of addressable LEDs

I have a strip of addressable LEDs, and an ESPHome firmware installed on an RPi Pico W to control it. The LEDs don’t turn on at all if the brightness ≤10%. Is there any way to remap 1% brightness to 11%, as that’s the lowest value the LEDs turn on at?

Everything is on the latest version. My ESPHome config:

esphome:
  name: ledstrip
  friendly_name: LED Strip

rp2040:
  board: rpipicow

logger:

api:
  password: ""

ota:
  - platform: esphome
    password: ""

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

light:
  - name: None # uses device's friendly name
    platform: rp2040_pio_led_strip
    pin: GPIO28
    chipset: WS2812
    num_leds: 15
    rgb_order: GRB
    pio: 0
    effects:
      - addressable_rainbow:
      - addressable_color_wipe:
      - addressable_twinkle:
          twinkle_probability: 7%
      - addressable_twinkle:
          name: Slow Twinkle
          twinkle_probability: 7%
          progress_interval: 8ms

Probably multiple ways. First time I heard of rp2040_pio_led_strip.
You could try to play with gamma_correct.
Or make simple automation to adjust % on_state.
Or use some template in the middle.

I had too high a protective resistor in the data line (470 Ohm), so that the light only came on at 25%. I reduced the resistance until I could start with 1% brightness (190 Ohm in my case).

1 Like

Forgive me but what would adding a resistor do? I don’t know too much about the data protocol

1 Like

Various sources online recommend a resistor in the data line, supposedly to protect the first LED. I don’t remember the exact reasoning, but apparently, if the controller and the LED strip power supply are powered by different power supplies and turn on at different times, the first LED can supposedly burn out.
Although I always connect everything to a single power supply, I installed this protective resistor as a precaution, and it turned out to be rather harmful (the light only turned on at 25%, and there were strange effects below).

I don’t really understand how this works, since the data line doesn’t carry an analog light intensity signal, but rather a numerical combination that contains the brightness for each LED, but that was the observed effect. With a 470 ohm series resistor (+ cable), the LED strip was only reasonably controllable from 25-30% brightness, and as the series resistor decreased, the required starting brightness level also decreased. However, I expect a similarly disruptive effect if cables and connectors lead to a to high resistance in the data line.

That resistor serves for protection, like some errors in wiring. It also helps to give smoother signal. But in case you power your LEDs at 5V and control them at 3.3V (out of specs), high value resistor can cause problems.

Ah okay. The LEDs are connected directly to the board on mine, so I can’t reduce the resistance if there is none (negligible) anyway :stuck_out_tongue:

I’m thinking this would probably be in software

Ended up using gamma_correct. Kinda tedious to re-upload a new firmware over and over while you’re finding the right value, but it works

That’s why I suggested to play: