I apologize in advance for the length of this post: I figured it would be useful to provide more details rather than less.
I purchased the 16-NeoPixel ring from an authorized Adafruit distributor in Switzerland, where I live. To be clear, the ring is not a clone and is marked with the Adafruit name and logo.
I've connected the ring's data-in line to a working port (port 0, in this case) on an Arduino Uno R3. The Arduino is powered by a 9V/2000mA wall wart. So as not to overload the Arduino's on-board regulator, I've run jumpers from the Arduino's Vin and GND pins to a 7805 regulator with 0.22uF ceramic caps between the Vin-GND pins and Vout-GND pins on the regulator. I've measured the voltage from the 7805 with a multimeter and it reads 5.01V.
The 7805, ring, the Uno, and my anti-static wrist strap (which was worn at all times when working on this project) share a common ground, which is connected to earth ground.
I soldered short, pre-tinned leads from the ring's four pins (Vin, GND, data-in, and data-out) and connected the ring's Vin pin to the 5V output of the 7805, the ring's GND pin to the 7805's GND pin, and the data-in pin to port 0 on the Uno.
I did not add a resistor on the ring's data-input line, but this did not seem to be necessary according to this tutorial from Adafruit.
I installed the NeoPixel library from GitHub, loaded strandtest, and set the following user-configurable lines:
Code: Select all
#define PIN 0
(...)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(16, PIN, NEO_GRB + NEO_KHZ800);
Later, I disconnected the power from the whole setup, then added a 100uF electrolytic capacitor across the Vout-GND lines of the 7805. The ring continued to work for a few minutes, then stopped working: the ring is entirely dark, except for a brief flash from several pixels when I first connect power to the ring. There's no pattern to which pixels flash: sometimes all of them flash, other times only one or two do. The flashes are typically either blue or white, but can occasionally be other colors.
My multimeter shows that there's still 5.01V across the ring's Vin and GND lines, and an ammeter says that 16.5mA is flowing through the all-dark ring (when it was working, the ring was drawing 200-400mA).
I've connected an oscilloscope to the ring's data-in and data-out pins (the data-in pin is connected to the Uno's pin 0, the data-out pin is floating). The scope clearly shows the 5V data pulses from the Arduino on the data-in line (the patterns of pulses change as the program cycles through different test patterns). The data-out pin shows what might be pulses, but they're only ~200mV in amplitude. The probes and the scope are set on 1:10 and the same vertical scales; to ensure this reading was not due to a broken or mis-configured probe, I connected both probes to the data-in pin and both traces are identical.
I changed the "define PIN 0" line to be "define PIN 3", uploaded the modified sketch to the Uno, and switched the lead to pin 3. I also added a 470 ohm resistor in series with the data line. Still doesn't work.
I also tested things in an identical manner with a 5V Trinket, with the same results.
The LEDs in the ring clearly work (they flash when powered on), but the ring does not seem to be responding to commands from the Arduino even though it worked briefly. Is it possible to have damaged the control circuits of the pixels while leaving the power lines intact?
Any suggestions or ideas?
I'd be happy to supply photos if that would help.
Thank you.
-Pete