0

NeoPixel 1/4 60 Ring: flashing and/or dead pixels after a sh
Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.

NeoPixel 1/4 60 Ring: flashing and/or dead pixels after a sh

by jefflim on Mon Dec 13, 2021 8:26 pm

Hello, we have purchased a few dozen NeoPixel 1/4 60 Rings (5050 RGBW LED w/ Integrated Drivers (Natural White - ~4500K), Adafruit Perma-Proto Half-sized Breadboard PCB - Single), and after a short while in use (1day - 2weeks) nearly 25% of them started to exhibit dead pixels and/or multiple flashing pixels. We have checked the connections as pictured in other forum entries, but need to know if there is something we can do to repair these. It seems like a pretty frequent occurrence. Any help would be much appreciated!

jefflim
 
Posts: 10
Joined: Mon Dec 13, 2021 8:20 pm

Re: NeoPixel 1/4 60 Ring: flashing and/or dead pixels after

by adafruit_support_carter on Tue May 24, 2022 4:58 pm

Sorry this post got missed. Unlocking thread to allow continued investigation.

Seems like a very high failure rate. It may be related to how they are being used. Can you please post some photos of your general setup so we can have some idea of how the NeoPixels are being used.

adafruit_support_carter
 
Posts: 23681
Joined: Tue Nov 29, 2016 2:45 pm

Re: NeoPixel 1/4 60 Ring: flashing and/or dead pixels after

by egradman on Tue May 24, 2022 5:25 pm

Here you go.

- they're driven by a very stable Meanwell power supply
- they're under acrylic and they aren't subject to any mechanical stresses
- they're passively vented for heat
Attachments
Screen Shot 2022-05-24 at 2.12.03 PM.png
Screen Shot 2022-05-24 at 2.12.03 PM.png (697.54 KiB) Viewed 259 times
controller.png
controller.png (292.94 KiB) Viewed 259 times

egradman
 
Posts: 2
Joined: Tue Dec 04, 2018 4:49 pm

Re: NeoPixel 1/4 60 Ring: flashing and/or dead pixels after

by adafruit_support_carter on Tue May 24, 2022 6:24 pm

Thanks.

The NeoPixles attach at J4 - J11?

1 = 5V power (direct from Meanwell supply?)
2 = NeoPixel data in (level shifted via SN74HCT245)
3 = GND
4 = not related to NeoPixel? used for touch?

How accessible is the hardware for troubleshooting? Can it be easily removed from that cabinet display? For bench testing, etc.

adafruit_support_carter
 
Posts: 23681
Joined: Tue Nov 29, 2016 2:45 pm

Re: NeoPixel 1/4 60 Ring: flashing and/or dead pixels after

by egradman on Tue May 24, 2022 6:34 pm

Thanks for getting back to us.

You're correct, those are the headers for the Neopixels. We're only ever using J6-J11 (fewer, in some cases).

your pinout is correct. Pin 4 is 1-wire data from RFID readers.

we can remove the units pretty easily. @jefflim do we have a spare module we can drop in? or a busted LED ring we've already removed for examination?

egradman
 
Posts: 2
Joined: Tue Dec 04, 2018 4:49 pm

Re: NeoPixel 1/4 60 Ring: flashing and/or dead pixels after

by jefflim on Fri May 27, 2022 7:31 pm

Yes, I have one of our good units swapped out for the failing one, and can send it in for inspection.

@adafruit_support_carter, where should I send the malfunctioning strip?

jefflim
 
Posts: 10
Joined: Mon Dec 13, 2021 8:20 pm

Re: NeoPixel 1/4 60 Ring: flashing and/or dead pixels after

by adafruit_support_carter on Sun May 29, 2022 1:36 pm

Sorry - there's no option for sending this in for testing. The testing would need to be done at your location - but we will help here with working through that testing.

As a first step, please post some photos of the failed hardware. That'll give us a general idea of how the hardware is being used, etc.

adafruit_support_carter
 
Posts: 23681
Joined: Tue Nov 29, 2016 2:45 pm

Re: NeoPixel 1/4 60 Ring: flashing and/or dead pixels after

by jefflim on Tue May 31, 2022 2:21 pm

Hello! Here are a few sample photos from the failed units. Similarly, none of the rest of the failing units show any visible signs of physical damage or misuse. Next steps?

IMG_4222.jpg
IMG_4222.jpg (313.06 KiB) Viewed 132 times


IMG_4220.jpg
IMG_4220.jpg (525.17 KiB) Viewed 132 times


IMG_4219.jpg
IMG_4219.jpg (964.85 KiB) Viewed 132 times

jefflim
 
Posts: 10
Joined: Mon Dec 13, 2021 8:20 pm

Re: NeoPixel 1/4 60 Ring: flashing and/or dead pixels after

by adafruit_support_carter on Tue May 31, 2022 5:26 pm

Thanks. That all looks fine. Neat adapter for making the connection. Soldering on the pads looks good:
solder.jpg
solder.jpg (18.13 KiB) Viewed 121 times


Is the strip shown exhibiting the dead pixel / flashing issue when in use?

Do you have a free Teensy, or any other Arduino board, that could be used for connecting to that strip and testing?

adafruit_support_carter
 
Posts: 23681
Joined: Tue Nov 29, 2016 2:45 pm

Re: NeoPixel 1/4 60 Ring: flashing and/or dead pixels after

by jefflim on Tue May 31, 2022 5:29 pm

Yes, we have either available. How should I configure the Teensy or Arduino and the strip for testing?

jefflim
 
Posts: 10
Joined: Mon Dec 13, 2021 8:20 pm

Re: NeoPixel 1/4 60 Ring: flashing and/or dead pixels after

by adafruit_support_carter on Tue May 31, 2022 5:41 pm

OK, let's try with a Teensy. And let's skip level shifting for now and just test at 3.3V:

Teensy 3.3V to NeoPixel 5V
Teensy GND to NeoPixel GND
Teensy any free pin to NeoPixel DIN

And then try running the basic strandtest example from the NeoPixel library:
https://github.com/adafruit/Adafruit_Ne ... ndtest.ino
changed as needed for the Teensy pin used and number of pixels etc.

Does strip work OK? Or does it still show same issue?

adafruit_support_carter
 
Posts: 23681
Joined: Tue Nov 29, 2016 2:45 pm

Re: NeoPixel 1/4 60 Ring: flashing and/or dead pixels after

by jefflim on Tue May 31, 2022 7:52 pm

We test configured a Teensy 3.2 as you had requested, and saw LED 1 cycling colors and flickering whereas in our configuration, only a single LED lights up solid green (even though the entire strip ought to show up yellow per our programming. Hmm...what next?

jefflim
 
Posts: 10
Joined: Mon Dec 13, 2021 8:20 pm

Re: NeoPixel 1/4 60 Ring: flashing and/or dead pixels after

by jefflim on Wed Jun 01, 2022 11:16 am

Just to clarify, the NeoPixel still appears to be failing, and only one of the LEDs is responding to the test sketch.

jefflim
 
Posts: 10
Joined: Mon Dec 13, 2021 8:20 pm

Re: NeoPixel 1/4 60 Ring: flashing and/or dead pixels after

by adafruit_support_carter on Wed Jun 01, 2022 12:31 pm

OK, please post a photo of your test setup and paste your test code here.

adafruit_support_carter
 
Posts: 23681
Joined: Tue Nov 29, 2016 2:45 pm

Re: NeoPixel 1/4 60 Ring: flashing and/or dead pixels after

by jefflim on Wed Jun 01, 2022 1:19 pm

Photos to follow, but here's how it was connected:

NeoPixel GND to Teensy 3.2 GND
NeoPixel DIN to Teensy 3.2 Pin 17
NeoPixel 5V to Teensy 3.2 3.3V (as per instructions)

Code: Select all | TOGGLE FULL SIZE
// A basic everyday NeoPixel strip test program.

// NEOPIXEL BEST PRACTICES for most reliable operation:
// - Add 1000 uF CAPACITOR between NeoPixel strip's + and - connections.
// - MINIMIZE WIRING LENGTH between microcontroller board and first pixel.
// - NeoPixel strip's DATA-IN should pass through a 300-500 OHM RESISTOR.
// - AVOID connecting NeoPixels on a LIVE CIRCUIT. If you must, ALWAYS
//   connect GROUND (-) first, then +, then data.
// - When using a 3.3V microcontroller with a 5V-powered NeoPixel strip,
//   a LOGIC-LEVEL CONVERTER on the data line is STRONGLY RECOMMENDED.
// (Skipping these may work OK on your workbench but can fail in the field)

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
 #include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif

// Which pin on the Arduino is connected to the NeoPixels?
// On a Trinket or Gemma we suggest changing this to 1:
#define LED_PIN    17

// How many NeoPixels are attached to the Arduino?
#define LED_COUNT 15

// Declare our NeoPixel strip object:
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
// Argument 1 = Number of pixels in NeoPixel strip
// Argument 2 = Arduino pin number (most are valid)
// Argument 3 = Pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
//   NEO_RGBW    Pixels are wired for RGBW bitstream (NeoPixel RGBW products)


// setup() function -- runs once at startup --------------------------------

void setup() {
  // These lines are specifically to support the Adafruit Trinket 5V 16 MHz.
  // Any other board, you can remove this part (but no harm leaving it):
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
  clock_prescale_set(clock_div_1);
#endif
  // END of Trinket-specific code.

  strip.begin();           // INITIALIZE NeoPixel strip object (REQUIRED)
  strip.show();            // Turn OFF all pixels ASAP
  strip.setBrightness(50); // Set BRIGHTNESS to about 1/5 (max = 255)
}


// loop() function -- runs repeatedly as long as board is on ---------------

void loop() {
  // Fill along the length of the strip in various colors...
  colorWipe(strip.Color(255,   0,   0), 50); // Red
  colorWipe(strip.Color(  0, 255,   0), 50); // Green
  colorWipe(strip.Color(  0,   0, 255), 50); // Blue

  // Do a theater marquee effect in various colors...
  theaterChase(strip.Color(127, 127, 127), 50); // White, half brightness
  theaterChase(strip.Color(127,   0,   0), 50); // Red, half brightness
  theaterChase(strip.Color(  0,   0, 127), 50); // Blue, half brightness

  rainbow(10);             // Flowing rainbow cycle along the whole strip
  theaterChaseRainbow(50); // Rainbow-enhanced theaterChase variant
}


// Some functions of our own for creating animated effects -----------------

// Fill strip pixels one after another with a color. Strip is NOT cleared
// first; anything there will be covered pixel by pixel. Pass in color
// (as a single 'packed' 32-bit value, which you can get by calling
// strip.Color(red, green, blue) as shown in the loop() function above),
// and a delay time (in milliseconds) between pixels.
void colorWipe(uint32_t color, int wait) {
  for(int i=0; i<strip.numPixels(); i++) { // For each pixel in strip...
    strip.setPixelColor(i, color);         //  Set pixel's color (in RAM)
    strip.show();                          //  Update strip to match
    delay(wait);                           //  Pause for a moment
  }
}

// Theater-marquee-style chasing lights. Pass in a color (32-bit value,
// a la strip.Color(r,g,b) as mentioned above), and a delay time (in ms)
// between frames.
void theaterChase(uint32_t color, int wait) {
  for(int a=0; a<10; a++) {  // Repeat 10 times...
    for(int b=0; b<3; b++) { //  'b' counts from 0 to 2...
      strip.clear();         //   Set all pixels in RAM to 0 (off)
      // 'c' counts up from 'b' to end of strip in steps of 3...
      for(int c=b; c<strip.numPixels(); c += 3) {
        strip.setPixelColor(c, color); // Set pixel 'c' to value 'color'
      }
      strip.show(); // Update strip with new contents
      delay(wait);  // Pause for a moment
    }
  }
}

// Rainbow cycle along whole strip. Pass delay time (in ms) between frames.
void rainbow(int wait) {
  // Hue of first pixel runs 5 complete loops through the color wheel.
  // Color wheel has a range of 65536 but it's OK if we roll over, so
  // just count from 0 to 5*65536. Adding 256 to firstPixelHue each time
  // means we'll make 5*65536/256 = 1280 passes through this loop:
  for(long firstPixelHue = 0; firstPixelHue < 5*65536; firstPixelHue += 256) {
    // strip.rainbow() can take a single argument (first pixel hue) or
    // optionally a few extras: number of rainbow repetitions (default 1),
    // saturation and value (brightness) (both 0-255, similar to the
    // ColorHSV() function, default 255), and a true/false flag for whether
    // to apply gamma correction to provide 'truer' colors (default true).
    strip.rainbow(firstPixelHue);
    // Above line is equivalent to:
    // strip.rainbow(firstPixelHue, 1, 255, 255, true);
    strip.show(); // Update strip with new contents
    delay(wait);  // Pause for a moment
  }
}

// Rainbow-enhanced theater marquee. Pass delay time (in ms) between frames.
void theaterChaseRainbow(int wait) {
  int firstPixelHue = 0;     // First pixel starts at red (hue 0)
  for(int a=0; a<30; a++) {  // Repeat 30 times...
    for(int b=0; b<3; b++) { //  'b' counts from 0 to 2...
      strip.clear();         //   Set all pixels in RAM to 0 (off)
      // 'c' counts up from 'b' to end of strip in increments of 3...
      for(int c=b; c<strip.numPixels(); c += 3) {
        // hue of pixel 'c' is offset by an amount to make one full
        // revolution of the color wheel (range 65536) along the length
        // of the strip (strip.numPixels() steps):
        int      hue   = firstPixelHue + c * 65536L / strip.numPixels();
        uint32_t color = strip.gamma32(strip.ColorHSV(hue)); // hue -> RGB
        strip.setPixelColor(c, color); // Set pixel 'c' to value 'color'
      }
      strip.show();                // Update strip with new contents
      delay(wait);                 // Pause for a moment
      firstPixelHue += 65536 / 90; // One cycle of color wheel over 90 frames
    }
  }
}

jefflim
 
Posts: 10
Joined: Mon Dec 13, 2021 8:20 pm

Please be positive and constructive with your questions and comments.