# Analog LED Support

**URL:** <https://wled.discourse.group/t/analog-led-support/55>\
**Category:** Enhancements\
**Created:** [February 5, 2020, 1:01am UTC](https://wled.discourse.group/t/analog-led-support/55 "2020-02-05T01:01:10Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![tonyno](https://yyz2.discourse-cdn.com/free1/user_avatar/wled.discourse.group/tonyno/32/242_2.png) [@tonyno](https://wled.discourse.group/u/tonyno)\
**Post date:** [February 5, 2020, 1:01am UTC](https://wled.discourse.group/t/analog-led-support/55/1 "2020-02-05T01:01:10Z")

</div>

A great start has been made. Let’s keep it going!

Addressable is great, but there are some applications where it’s _beyond_ overkill. 😉

My thought was to use more than just the first pixel’s color. I recently started using the ESP32 and it’s possible to handle much more. I am currently working on four, RGBW channels. _In my experience, RGB is usually fine **with** proper support, i.e. white balance/color correction, but that is still down the road._

My first road-block was that SetPixelColor is only getting an indexPixel of 0, even though I changed the code to…

#ifdef WLED\_USE\_ANALOG\_LEDS  
if (indexPixel \> 3) return; // Ignore all but first four pixels.

Anyone have ideas?

---

<div class="post-metadata">

**Author:** ![Aircoookie](https://yyz2.discourse-cdn.com/free1/user_avatar/wled.discourse.group/aircoookie/32/2_2.png) [@Aircoookie](https://wled.discourse.group/u/Aircoookie)\
**Post date:** [February 5, 2020, 9:41am UTC](https://wled.discourse.group/t/analog-led-support/55/2 "2020-02-05T09:41:09Z")

</div>

Hi!

```auto
if (indexPixel > 3) return; // Ignore all but first four pixels.

```

should work fine! What you are probably experiencing is that only the color of the 4th pixel (indexPixel == 3) is set. You’ll need a switch statement that sets the correct analog output to set the color to.  
Also of course, LED count in LED settings should be at least 4.

I plan to support runtime-configurable multi-strip support soon, including support for as many analog channels as you have PWM pins available 🙂

---

<div class="post-metadata">

**Author:** ![tonyno](https://yyz2.discourse-cdn.com/free1/user_avatar/wled.discourse.group/tonyno/32/242_2.png) [@tonyno](https://wled.discourse.group/u/tonyno)\
**Post date:** [February 5, 2020, 11:17am UTC](https://wled.discourse.group/t/analog-led-support/55/3 "2020-02-05T11:17:57Z")

</div>

I wish. indexPixel is always 0.

If it got beyond that, this would handle the outputs…

```
void SetRgbPwm(uint8_t r, uint8_t g, uint8_t b, uint16_t i)
  {
  #ifdef ARDUINO_ARCH_ESP32
    ledcWrite(i*3+0, r); //RPIN
    ledcWrite(i*3+1, g); //GPIN
    ledcWrite(i*3+2, b); //BPIN
```

---

<div class="post-metadata">

**Author:** ![Aircoookie](https://yyz2.discourse-cdn.com/free1/user_avatar/wled.discourse.group/aircoookie/32/2_2.png) [@Aircoookie](https://wled.discourse.group/u/Aircoookie)\
**Post date:** [February 5, 2020, 5:19pm UTC](https://wled.discourse.group/t/analog-led-support/55/4 "2020-02-05T17:19:43Z")

</div>

Just looked into this again.

There are two checks `if (indexPixel != 0) return; //set analog LEDs from first pixel`  
in SetPixelColor, one for RGB and one for RGBW.  
Have you replaced both?

---

<div class="post-metadata">

**Author:** ![tonyno](https://yyz2.discourse-cdn.com/free1/user_avatar/wled.discourse.group/tonyno/32/242_2.png) [@tonyno](https://wled.discourse.group/u/tonyno)\
**Post date:** [February 5, 2020, 6:21pm UTC](https://wled.discourse.group/t/analog-led-support/55/5 "2020-02-05T18:21:45Z")

</div>

I’m not using RGBW, but I’ll try that.

---

<div class="post-metadata">

**Author:** ![tonyno](https://yyz2.discourse-cdn.com/free1/user_avatar/wled.discourse.group/tonyno/32/242_2.png) [@tonyno](https://wled.discourse.group/u/tonyno)\
**Post date:** [February 6, 2020, 2:04am UTC](https://wled.discourse.group/t/analog-led-support/55/6 "2020-02-06T02:04:12Z")

</div>

No change. ☹

---

<div class="post-metadata">

**Author:** ![Aircoookie](https://yyz2.discourse-cdn.com/free1/user_avatar/wled.discourse.group/aircoookie/32/2_2.png) [@Aircoookie](https://wled.discourse.group/u/Aircoookie)\
**Post date:** [February 6, 2020, 10:17am UTC](https://wled.discourse.group/t/analog-led-support/55/7 "2020-02-06T10:17:38Z")

</div>

Hmm… can you send me the NpbWrapper.h you have so far?

---

<div class="post-metadata">

**Author:** ![tonyno](https://yyz2.discourse-cdn.com/free1/user_avatar/wled.discourse.group/tonyno/32/242_2.png) [@tonyno](https://wled.discourse.group/u/tonyno)\
**Post date:** [February 6, 2020, 12:20pm UTC](https://wled.discourse.group/t/analog-led-support/55/8 "2020-02-06T12:20:22Z")

</div>

Will do.

---

<div class="post-metadata">

**Author:** ![tonyno](https://yyz2.discourse-cdn.com/free1/user_avatar/wled.discourse.group/tonyno/32/242_2.png) [@tonyno](https://wled.discourse.group/u/tonyno)\
**Post date:** [February 6, 2020, 11:48pm UTC](https://wled.discourse.group/t/analog-led-support/55/9 "2020-02-06T23:48:35Z")

</div>

Sent via email!

---

<div class="post-metadata">

**Author:** ![Aircoookie](https://yyz2.discourse-cdn.com/free1/user_avatar/wled.discourse.group/aircoookie/32/2_2.png) [@Aircoookie](https://wled.discourse.group/u/Aircoookie)\
**Post date:** [February 8, 2020, 11:00am UTC](https://wled.discourse.group/t/analog-led-support/55/10 "2020-02-08T11:00:30Z")

</div>

Took a look and I have no idea why it wouldn’t work… (at least when the LED type is set to RGB)  
An issue I had with ESP32 before is that they sometimes seem to enter RGBW mode even though that is not set in the settings. Maybe that is the culprit here, too.  
You can try to see if going to LED settings, checking RGBW, saving, unchecking RGBW again, saving and maybe rebooting helps 🙂

---

<div class="post-metadata">

**Author:** ![tonyno](https://yyz2.discourse-cdn.com/free1/user_avatar/wled.discourse.group/tonyno/32/242_2.png) [@tonyno](https://wled.discourse.group/u/tonyno)\
**Post date:** [February 8, 2020, 1:49pm UTC](https://wled.discourse.group/t/analog-led-support/55/11 "2020-02-08T13:49:22Z")

</div>

Interesting! I toggled RGBW and it started working! I will set that up again and see if it’s repeatable.

---

<div class="post-metadata">

**Author:** ![tonyno](https://yyz2.discourse-cdn.com/free1/user_avatar/wled.discourse.group/tonyno/32/242_2.png) [@tonyno](https://wled.discourse.group/u/tonyno)\
**Post date:** [February 23, 2020, 2:40pm UTC](https://wled.discourse.group/t/analog-led-support/55/12 "2020-02-23T14:40:06Z")

</div>

Back to `indexPixel`. I see what Def3nder did trying to fix flicker (moving the pixel checking from NpbWrapper.h to FX\_fcn.cpp) has been put into the main code.

Would it be best to add a loop _somewhere_ to run through the first _n_ pixels to set the PWM values, or should I do it in FX\_fcn.cpp:WS2812FX::setRgbwPwm and replace the “0” used?

---

<div class="post-metadata">

**Author:** ![tonyno](https://yyz2.discourse-cdn.com/free1/user_avatar/wled.discourse.group/tonyno/32/242_2.png) [@tonyno](https://wled.discourse.group/u/tonyno)\
**Post date:** [February 25, 2020, 1:03pm UTC](https://wled.discourse.group/t/analog-led-support/55/13 "2020-02-25T13:03:37Z")

</div>

Bump.

---

<div class="post-metadata">

**Author:** ![tonyno](https://yyz2.discourse-cdn.com/free1/user_avatar/wled.discourse.group/tonyno/32/242_2.png) [@tonyno](https://wled.discourse.group/u/tonyno)\
**Post date:** [February 28, 2020, 12:58pm UTC](https://wled.discourse.group/t/analog-led-support/55/14 "2020-02-28T12:58:32Z")

</div>

@Def3nder Opinion on my question?

---

<div class="post-metadata">

**Author:** ![huggy-d1](https://yyz2.discourse-cdn.com/free1/user_avatar/wled.discourse.group/huggy-d1/32/51_2.png) [@huggy-d1](https://wled.discourse.group/u/huggy-d1)\
**Post date:** [February 28, 2020, 4:31pm UTC](https://wled.discourse.group/t/analog-led-support/55/15 "2020-02-28T16:31:54Z")

</div>

I believe the library that was causing problems has been updated. Maybe try a fresh build using the updated / fixed problematic library?

---

<div class="post-metadata">

**Author:** ![tonyno](https://yyz2.discourse-cdn.com/free1/user_avatar/wled.discourse.group/tonyno/32/242_2.png) [@tonyno](https://wled.discourse.group/u/tonyno)\
**Post date:** [February 29, 2020, 12:36am UTC](https://wled.discourse.group/t/analog-led-support/55/16 "2020-02-29T00:36:07Z")

</div>

This is not about a library. 😉

---

<div class="post-metadata">

**Author:** ![Def3nder](https://yyz2.discourse-cdn.com/free1/user_avatar/wled.discourse.group/def3nder/32/62_2.png) [@Def3nder](https://wled.discourse.group/u/Def3nder)\
**Post date:** [February 29, 2020, 11:52pm UTC](https://wled.discourse.group/t/analog-led-support/55/17 "2020-02-29T23:52:10Z")

</div>

Hi @tonyno,

as discussed on discord - just for the other ones:

please use the WS2812FX::setRgbwPwm(void) in FX\_fcn.cpp  
and create a look like

```
for (i = 0 ; i < 5 ; i++) { 
   RgbwColor color = bus->GetPixelColorRgbw(i);
   byte b = getBrightness();
   if (color == _analogLastColor && b == _analogLastBri) return;   

   set the PWM here ...

}
```

---

<div class="post-metadata">

**Author:** ![tonyno](https://yyz2.discourse-cdn.com/free1/user_avatar/wled.discourse.group/tonyno/32/242_2.png) [@tonyno](https://wled.discourse.group/u/tonyno)\
**Post date:** [March 1, 2020, 3:20pm UTC](https://wled.discourse.group/t/analog-led-support/55/18 "2020-03-01T15:20:32Z")

</div>

I found that the PWM setting is still in NpbWrapper.h. Guess I need to comment that out, then.

---

<div class="post-metadata">

**Author:** ![tonyno](https://yyz2.discourse-cdn.com/free1/user_avatar/wled.discourse.group/tonyno/32/242_2.png) [@tonyno](https://wled.discourse.group/u/tonyno)\
**Post date:** [March 1, 2020, 4:55pm UTC](https://wled.discourse.group/t/analog-led-support/55/19 "2020-03-01T16:55:59Z")

</div>

Looks like I’ve got it!

---

<div class="post-metadata">

**Author:** ![borrmi](https://yyz2.discourse-cdn.com/free1/user_avatar/wled.discourse.group/borrmi/32/74_2.png) [@borrmi](https://wled.discourse.group/u/borrmi)\
**Post date:** [March 3, 2020, 9:31pm UTC](https://wled.discourse.group/t/analog-led-support/55/20 "2020-03-03T21:31:32Z")

</div>

@tonyno Can you please explain your solution?  
I have tons of analog LED-Strips, waiting for a new Controller. 😁

[Next page](https://wled.discourse.group/t/analog-led-support/55.md?page=2)
