1

I have an arduino UNO hooked up to a neopixel LED strip with 148 lights. Most of the time it works fine, but when I upload a program that changes the brightness frequently, particularly when I increase brightness, only the first 8 LEDs continue responding. The rest get stuck.

Here's an example of the kind of code that sets this issue off. To fix it, I usually have to restart the lights and the arduino and sometimes upload a blank program to the arduino.

I'm pretty new to arduino programming so and help would be really appreciated. Thank you.

#include "FastLED.h"

FASTLED_USING_NAMESPACE 

// FAST LED definitions
#define DATA_PIN    3
#define LED_TYPE    WS2812B
#define COLOR_ORDER GRB
#define NUM_LEDS    148

CRGB leds[NUM_LEDS];
#define DATA_PIN 3 // Output Pin to Data Line on Strip

int fadeAmount = 5;  
int brightness = 0;

void setup()
{
   FastLED.addLeds<LED_TYPE,DATA_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
}

void loop()
{
   for(int i = 0; i < NUM_LEDS; i++ )
   {
   leds[i].setRGB(0,255,0);  
   leds[i].fadeLightBy(brightness);
  }
  FastLED.show();
  brightness = brightness + fadeAmount;
  // reverse the direction of the fading at the ends of the fade:
  if(brightness == 0 || brightness == 255)
  {
    fadeAmount = -fadeAmount ;
  }   
  delay(20);
}

2 Answers 2

1

After doing more research and getting feedback on the Adafruit forum here, it appears that the problem was a cracked solder joint. I managed to get access to the strip and wiggled it a little and the problem has gone away. The recommendation is to reflow the joint by adding a little solder over the data connection between where the LEDs stop being responsive.

3
  • If it's only the solder, you can indeed resolder/reflow it. At one of my strips, the solder-joint ripped out some of the strip, then it will be best to cut out the pixel completely. You can easily re-attach them (without the single pixel).
    – Paul
    Mar 4, 2016 at 7:27
  • You might indeed also check the heat generation, if it becomes hot enough to reflow the solder, it won't last long.
    – Paul
    Mar 4, 2016 at 7:28
  • I replaced the pixel and the set up appears to be working without issue now.
    – Lorenz
    Mar 16, 2016 at 2:16
1

It is almost certainly a power issue. The Adafruit page about one of those types of Neopixels says:

Don't forget, with 256 LEDs, you could use over 15A of current if you turn on all the LEDs on to white (which we really do not recommend because we don't think the flex PCB can handle that much current). Try to keep the current draw at under 5A ...

Increasing the brightness increases the current drawn. Do you have a heavy-duty power supply? Are the connecting leads sufficient for (say) 8 amps of current?


New information based on comments made

Based on comments by Lorenz I now think it is more likely to be that they are overheating.

I have the strip embedded in a picture frame with epoxy resin over it.

That makes it difficult for the ICs to cool down, and LEDs generate heat. If you search for "neopixels heat" you find quite a few matches. Some suggestions made are to use a heat sink or a fan. If this isn't practical for you, then running at a lower PWM rate (ie. not as bright) and not as saturated colour, could help keep the heat down.

You don't want to "cook" one of the early pixels, because each one has to pass the data on to the next one in sequence, so if you lose an early one, you lose everything after it, particularly if you can't get at it to replace one.


Postscript regarding heat

I have been testing a NeoPixel with a temperature sensor. Displaying full white (255/255/255) it has reached about 44°C. So clearly it warms up. However this is in the open air with just some sticky-tape holding the sensor onto the LED. According to the spec the chip can operate at up to 80°C, so this is within range.

However if the whole thing was sealed in epoxy, then the heat being generated would have much less chance of escaping into the ambient air, and thus would be likely to get a lot hotter.

13
  • I'm pretty sure I'm good on the power supply side. I have a 5V 10A supply hooked up (adafruit.com/products/658).
    – Lorenz
    Feb 26, 2016 at 0:01
  • What do you mean by are the connecting leads sufficient for (say) 8 amps of current?
    – Lorenz
    Feb 26, 2016 at 0:01
  • I'm using basic jumper wires (adafruit.com/products/1957) connected through a 2.1mm DC barrel jack and a mini breadboard.
    – Lorenz
    Feb 26, 2016 at 0:04
  • I see. From that page Each wire is 28 AWG (7 strands @ 36 AWG) and from Wire Gauge and Current Limits Including Skin Depth and Strength 28 AWG wire has a maximum of 1.4 amps for chassis wiring. Thus I suspect your wiring cannot carry the load. Try measuring the voltage on the Neopixel end (ie. at the end of the wire). I am guessing that, when the brightness is up, you won't be getting 5V there.
    – Nick Gammon
    Feb 26, 2016 at 0:15
  • Nick - I've rewired the neopixel wires to go directly to the 5v power supply without any jumper cables in between. I'm still getting the problem. I have the strip embedded in a picture frame with epoxy resin over it. I cannot actually get to the other end of the strip to measure the voltage there. Is it possible that the epoxy enclosure is causing the LED to overheat. Usually the strip works fine for a few minutes (if I haven't plugged it in in a while) and then craps out. Any thoughts on how I might be able to fix this without tearing up the frame?
    – Lorenz
    Feb 29, 2016 at 18:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.