Voting resources, early voting, and poll worker information - VOTE. ... Adafruit is open and shipping.
0

Arduino and LED Neopixels
Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.

Arduino and LED Neopixels

by jmndesign on Mon Sep 07, 2020 4:11 pm

I'm trying to power a strip of Neopixel LEDs with the arduino board. There are 56 LEDs in the segment and the Arduino Uno is connected to a 5v power supply and the USB of my laptop. The Uno is responding properly and i have been able to load Examples form the Neopixel library but the LEDs are not lit. I have checked my wiring and solder joints and they seem ok. I disconnected and reconnected the power and one time the first seven LEDs lit up. The next time that I did it, only the first LED was lit. I tried a separate power supply to just the LEDs and got no response.

Thanks

20200907_142336.jpg
20200907_142336.jpg (598.69 KiB) Viewed 73 times

jmndesign
 
Posts: 19
Joined: Sun Aug 23, 2020 1:08 pm

Re: Arduino and LED Neopixels

by caitlinsdad on Mon Sep 07, 2020 7:59 pm

Read through the neopixel guide to make sure everything is set up correctly https://learn.adafruit.com/adafruit-neopixel-uberguide
- The example code you are using may have the data pin it is using something different than #8 from your picture. You need to change the pin and number of pixels in the config line.
- Look on the strip for arrows indicating the data path. It should be pointing away from the connection to the board. The wire from the board should connect to a DI or data in pad on the strip, not DO/Data Out
- just hooking up power to a neopixel strip will not light it up, although it might just flash from a power surge.
Good luck.

caitlinsdad
 
Posts: 611
Joined: Fri Feb 24, 2012 4:23 pm

Re: Arduino and LED Neopixels

by jmndesign on Tue Sep 08, 2020 10:46 am

I wired in an independant 5v switchable power supply for the LEDs and am running the Arduino UNO off of the USB. I corrected the number of pixels and input to reflect my setup. After loading Strandtest (below) I get 2 of 4 segments to light up randomly, the lights dont cycle through the strandtest. Some of the the LEDS are at full brightness, some are faded and some are out.
I checked all of my connections and solder points.

updated photo is attached

// 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 6

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

// 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 outer loop:
for(long firstPixelHue = 0; firstPixelHue < 5*65536; firstPixelHue += 256) {
for(int i=0; i<strip.numPixels(); i++) { // For each pixel in strip...
// Offset pixel hue by an amount to make one full revolution of the
// color wheel (range of 65536) along the length of the strip
// (strip.numPixels() steps):
int pixelHue = firstPixelHue + (i * 65536L / strip.numPixels());
// strip.ColorHSV() can take 1 or 3 arguments: a hue (0 to 65535) or
// optionally add saturation and value (brightness) (each 0 to 255).
// Here we're using just the single-argument hue variant. The result
// is passed through strip.gamma32() to provide 'truer' colors
// before assigning to each pixel:
strip.setPixelColor(i, strip.gamma32(strip.ColorHSV(pixelHue)));
}
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
}
}
}

jmndesign
 
Posts: 19
Joined: Sun Aug 23, 2020 1:08 pm

Re: Arduino and LED Neopixels

by jmndesign on Tue Sep 08, 2020 10:56 am

Quick update, I disconnected and reconnected the LED power and now no lights at all. Arduino is still functioning properly.

jmndesign
 
Posts: 19
Joined: Sun Aug 23, 2020 1:08 pm

Re: Arduino and LED Neopixels

by caitlinsdad on Tue Sep 08, 2020 7:39 pm

If you are using an external power supply for the neopixel strip, you must connect a ground wire to the uno ground to establish a common ground for things to work properly since the uno is off of usb power.

caitlinsdad
 
Posts: 611
Joined: Fri Feb 24, 2012 4:23 pm

Re: Arduino and LED Neopixels

by jmndesign on Wed Sep 09, 2020 10:23 am

Yes, I do have a ground from the power supply to the UNO, also a 1000K capacitor.

jmndesign
 
Posts: 19
Joined: Sun Aug 23, 2020 1:08 pm

Re: Arduino and LED Neopixels

by caitlinsdad on Wed Sep 09, 2020 11:40 am

In my experience, if the wiring seems good, the code seems good, and things are still not working, the first neopixel on the strip may be damaged. The neopixel chip may have separated from the strip somehow or a pad trace broke internally... It is usually best to sacrifice a chip and cut at the next set of pads so you can make new connections there. You could just jumper over a "bad" chip but leaving it in the circuit may cause unknown issues. Flexible strips can be difficult to troubleshoot.

caitlinsdad
 
Posts: 611
Joined: Fri Feb 24, 2012 4:23 pm

Re: Arduino and LED Neopixels

by jmndesign on Wed Sep 09, 2020 12:12 pm

Here's something I just thought about.... I bought the female DC adapter from Amazon and not Adafruit. How do I check to see if it's tip positive or reversed?


Thanks for your help

jmndesign
 
Posts: 19
Joined: Sun Aug 23, 2020 1:08 pm

Re: Arduino and LED Neopixels

by caitlinsdad on Wed Sep 09, 2020 2:25 pm

Best way is to use a voltmeter but if you just have a flashlight bulb and battery, check for continuity to trace the inner pin or round shell to the terminal posts to see what they are marked as. Then take a look at what your power supply plug is configured for to match up what is going through.

But you should be able to power a strip (at least a meter/60 neopixels) directly off of the UNO so it is more likely the first neopixel went bad - which does happen - due to handling or maybe when you tried the reverse polarity external power supply on it the first time.

caitlinsdad
 
Posts: 611
Joined: Fri Feb 24, 2012 4:23 pm

Please be positive and constructive with your questions and comments.