Test NeoPixel Reels

Testing all of the components before any serious work commences can save heartache later. Though the testing process can get a bit tedious, it’s so much easier to exchange defective parts now when they’re not wired into something!

You’ll need an Arduino microcontroller board (any model should do — Uno, Leonardo, etc.) and a suitable USB cable. The Arduino is only used during testing, it’s not a permanent part of the project. If you don’t have an Arduino board around, maybe you can borrow one from a geeky friend, or just buy one (they’re fun to experiment with)…then work through a couple introductory tutorials to understand how the software gets installed and code gets uploaded to the board.

If you don’t already use it, download and install the Adafruit NeoPixel Library for Arduino to run the test code. We have a tutorial for library installation too.

Testing Full NeoPixel Reels

For these tests, do not use the strandtest example code that comes with the NeoPixel library. Instead, copy and paste the code below into a new Arduino sketch, then upload it to the board.

Don’t connect any NeoPixels yet. There’s a procedure to follow.
Download: file
// Simple NeoPixel test.  Lights just a few pixels at a time so a
// long strip can safely be powered from Arduino 5V pin.  Arduino
// may nonetheless hiccup when LEDs are first connected and not
// accept code.  So upload code first, unplug USB, connect pixels
// to GND FIRST, then +5V and digital pin 6, then re-plug USB.
// A working strip will show a few pixels moving down the line,
// cycling between red, green and blue.  If you get no response,
// might be connected to wrong end of strip -- look for the data
// direction arrows printed on the strip.

#include <Adafruit_NeoPixel.h>

#define PIN    6
#define N_LEDS 150 // 5 meter reel @ 30 LEDs/m

Adafruit_NeoPixel strip = Adafruit_NeoPixel(N_LEDS, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  strip.begin();
}

void loop() {
  chase(0xFF0000); // Red
  chase(0x00FF00); // Green
  chase(0x0000FF); // Blue
}

static void chase(uint32_t c) {
  for(uint16_t i=0; i<strip.numPixels()+4; i++) {
      strip.setPixelColor(i  , c); // Draw new pixel
      strip.setPixelColor(i-4, 0); // Erase pixel a few steps back
      strip.show();
      delay(25);
  }
}
Gather up all your LED reels and the Arduino. You’ll also need a small jumper wire (possibly some additional components…more on that in a moment).
Examine each reel to find the “input” end of the strip. Most are coiled with this at the outer edge, but occasionally one’s wound backwards for whatever reason.

Look for the solder pad labeled “DIN” (data input), with the arrow pointing toward the first LED (this shows the direction of data moving down the strip).

Both ends of the strip have a 2-pin JST connector, plus two extra wires for power.
Strip a little extra insulation from the tips of the power wires. Connect the black wire to any GND on the Arduino, then the red wire to 5V (the Arduino should not be connected to USB yet…try to avoid connecting NeoPixels to a live circuit).

Look closely at the JST plug. One of the two wires (usually white) leads to the DIN pin on the strip. Using a jumper wire, connect DIN to Arduino pin 6.
RECOMMENDED: if you’re in a dry or static-prone climate, don’t connect the NeoPixel DIN line directly. Use this simple circuit instead:
  • Put a 330 Ohm resistor between Arduino pin 6 and DIN on the strip (a slightly larger resistor like 500 Ohms is fine, if that’s what you have around).
  • Put a 100K resistor between DIN and GND.
(This is a simplified diagram; the actual NeoPixel strip has a plug on the input.)

You can do this even if you’re not in a dry climate. Better safe than sorry.
Unroll the NeoPixel strip along the ground or a long workbench, so it all lies flat and facing up. Don’t test on the reel…it obscures parts of the strip. You need a clear view of every pixel!

Make sure the power wires at the “out” end aren’t touching anything or each other!

Now connect the USB cable between the Arduino and a computer’s USB port or a USB wall charger. After a moment you should see a few pixels chase down the strip. Red, green, blue, repeat.

If it’s working, let this run for a few minutes. Look down the strip, watching closely for any pixels that don’t light the right color, or don’t light at all. Does the “chase” make it all the way down the strip, or does it cut out part way down?
I am a horrible person, testing electronics on carpet. The concrete floor in the garage would be smarter.

If everything checks out, dismantle it in the reverse order: unplug USB, disconnect DIN, then 5V, then GND. Roll it back up and proceed to the next reel.

Troubleshooting

Nothing lights up!

  • If you’re using a computer’s USB port for power: does the computer report a device is drawing too much current? This is almost certainly an electrical short. Are the power wires at the “out” end touching each other, or anything electrically conductive? How about the Arduino? Is it sitting on one of the anti-static bags? Watch it…they’re mildly conductive.
  • Check the strip and Arduino wiring against the diagram: GND, 5V and DIN.
  • Are you connected to the input end? DIN? Not DOUT.
  • Did you upload the test program to the Arduino first?
  • If you have a multimeter, check the voltage across the power wires at the “out” end. It’ll be lower than 5 Volts, that’s normal…but it should not read 0V.
Or it could simply be a bum strip; if nothing else works, set it aside and try the next. If you encounter the same problem a second time, then “user error” is more likely the cause. Stop immediately and see “Next Steps” below.

The LEDs cut out part way down the strip!

If you’re using the test code exactly as written (150 pixels) on a 5 meter, 30 LED/m reel (150 pixels) and it cuts off, then this is likely a dead NeoPixel or a bad solder joint.
  • Pinch down on the strip on the last good pixel and the first bad one. Any change? If so, there’s a cracked solder joint. There’s ways you can try repairing this, or you can set up an exchange.
  • NeoPixel strips are manufactured in 1/2 meter lengths, which are then soldered together to produce a reel. Look closely between the last working pixel and the first bad one. Is this one of the half-meter join spots? If so, give a pinch there too.

One pixel (or a few) don’t light, but the chase otherwise makes it down the strip.

It’s a defective LED; no amount of pinching or coercion will correct for this. It needs replacing.

Next Steps


As long as they’re testing OK, repeat the procedure for every reel. It goes faster if you have friends helping out, assembly-line style.

If one reel is misbehaving, it’s probably a defect. If a second reel misbehaves the same, STOP IMMEDIATELY. You might be killing them!

If you encounter any problems, post on the Adafruit Forums (in the “Glowy Things” section). It’s very helpful if you can provide a photo (or several) clearly showing your wiring between the Arduino and NeoPixel strip, and please describe your test setup and the symptoms observed. We’ll look it over for gremlins and try to correct any user error. If it’s defective, we can then set up an exchange.

For defective parts, you have options:
  • If you prefer to keep it simple, we can just exchange the complete reel(s).
  • Maybe you’re eager to make progress. On the next pages, we’ll be cutting 2-meter sections from these reels and joining pairs of the remaining 1-meter sections. If you’re able and willing to salvage some working 2-meter or 1-meter sections from the 5-meter reel, we can exchange the defective section(s) for an equivalent length of new strip.
(This is one of the reasons for ordering some extra strip. You can continue making progress on the project while replacement parts are en route.)
This guide was first published on Aug 11, 2014. It was last updated on Aug 11, 2014. This page (Test NeoPixel Reels) was last updated on May 19, 2019.