Simply can't seem to drive a WS2811 RGB LED strip from my Uno!

So... I got a couple meters of this RGB LED strip from ebay (at 60 LEDs/meter, it's a total of 120 LEDs) and I can't seem to get it working.

I used the "FirstLight" example sketch from the FastLED.h library, made sure the strip's data was connected to the default pin 3, WS2811 was also the default so the only thing I had to change was the number of LEDs.

Also, after a few failures, I even added a blink toggle on pin 13 to indicate whenever it loops to make sure it isn't freezing up or anything (which worked fine), so now my code looks like this:

// Use if you want to force the software SPI subsystem to be used for some reason (generally, you don't)
// #define FORCE_SOFTWARE_SPI
// Use if you want to force non-accelerated pin access (hint: you really don't, it breaks lots of things)
// #define FORCE_SOFTWARE_SPI
// #define FORCE_SOFTWARE_PINS
#include "FastLED.h"

///////////////////////////////////////////////////////////////////////////////////////////
//
// Move a white dot along the strip of leds.  This program simply shows how to configure the leds,
// and then how to turn a single pixel white and then off, moving down the line of pixels.
// 

// How many leds are in the strip?
#define NUM_LEDS 120

// Data pin that led data will be written out over
#define DATA_PIN 3

// Clock pin only needed for SPI based chipsets when not using hardware SPI
//#define CLOCK_PIN 8

// This is an array of leds.  One item for each led in your strip.
CRGB leds[NUM_LEDS];

boolean blinkState;

// This function sets up the ledsand tells the controller about them
void setup() {
	// sanity check delay - allows reprogramming if accidently blowing power w/leds
   	delay(2000);

      // Uncomment one of the following lines for your leds arrangement.
      // FastLED.addLeds<TM1803, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<TM1804, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<TM1809, DATA_PIN, RGB>(leds, NUM_LEDS);
      FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
      // FastLED.addLeds<WS2811_400, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<GW6205, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<GW6205_400, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<UCS1903, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<UCS1903B, DATA_PIN, RGB>(leds, NUM_LEDS);

      // FastLED.addLeds<WS2801, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<SM16716, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<LPD8806, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<P9813, RGB>(leds, NUM_LEDS);
      
      // FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<SM16716, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<LPD8806, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
      
      pinMode(13, OUTPUT);
}

// This function runs over and over, and is where you do the magic to light
// your leds.
void loop() {
   // Move a single white led 
   for(int whiteLed = 0; whiteLed < NUM_LEDS; whiteLed = whiteLed + 1) {
      // Turn our current led on to white, then show the leds
      leds[whiteLed] = CRGB::White;

      // Show the leds (only one of which is set to white, from above)
      FastLED.show();

      // Wait a little bit
      delay(100);
      
      blinkState = !blinkState;
      digitalWrite(13, blinkState);

      // Turn our current led back to black for the next loop around
      leds[whiteLed] = CRGB::Black;
   }
}

I think the problem might lie with the power source, because when I tried to hook it up directly to Arduino's 5V pin, the Arduino's power and pin 13 LEDs only lit very dimly. I unplugged immediately so as not to cause damage, then through some research found that Arduino's 5V pin is rated at a max of 1 amp, whereas AA batteries typically put out about 2.4 amps. I also researched the draw for the LED strip, and at 1.2A/meter, AAs would be perfect (right? Or should it be more?). So I hooked up 3 AAs in series to get 4.5V at 2.4A, plugged the LED strip's VCC into the positive end, connected all the grounds (side note, can someone tell me why that's necessary? Anyway), and tried it out. The Arduino worked fine, but I still have yet to see any activity whatsoever from the LED strip, which is a bit concerning, because I'd expect them to at least light up dimly, or light up and then burn out or something, but this could even be a wiring problem which I've double and triple checked (although nothing is soldered yet because it was too hot yesterday so I suppose there's still a small chance, but the arrows are facing away from me and no wires are shorting that I know of and everything's in its place)...

Yep, I think that about sums it up... any ideas? Thanks in advance!

Stop mucking about.

The Arduino cannot supply anything near 1 A from its regulator or from USB. If you are experimenting, you will be powering the Arduino from the USB port on your PC, so that is OK.

Now, before you even think of proceeding further - or complaining - go and get a regulated 5V power supply rated for at least the maximum current calculated for your LED strip.

Yeah I need to work on researching BEFORE I test stuff... I was hoping I wouldn't need any external regulator but if that's what you think I need, I'll look into it. What exactly am I looking for (ie wall wart, IC, special battery pack, special cable...)?

Also, do you know why the LEDs weren't lighting up at all instead of lighting very dimly? Is that how under-amperage vs under-voltage works (in that not enough volts lights them dimly but not enough current doesn't light at all)?

Also, do you know why the LEDs weren't lighting up at all instead of lighting very dimly?

When you try and pull too much current from a power supply the voltage out of that power supply drops. So too much current becomes too little voltage.

120 LEDs at 60mA per LED requires how much current? Do the maths.

So... would something like this 9V-35V (5A max) regulator I found on ICStation suffuce? It's a little bigger than a standard 9V battery which will be slightly annoying in my design, but if this works I'm sure I can find a way around it.

Did you do the maths?
No.
You need at least 7.2 Amps to power all your LEDs.

Ohhh my bad; I was going off the 20mA per individual LED component (aka separate R, G, and B). Sorry 'bout that. In that case, take a look at this 5V-30V (10A max output) regulator from ebay -- it seems a bit beefier. Although, also take a look at the description regarding temperature and long-term vs. short-term usage... I don't work with conversions much so I don't really know what I should and shouldn't do with this.

That's just a dc-dc voltage convertor. It does not supply any power by itself. Where will the power come from? If a wall-wart, just get a 5V stabilised one (with 8~10A current). Then you will not need any regulator.

Paul

PaulRB:
If a wall-wart, just get a 5V stabilised one (with 8~10A current).

A ten Amp wall-wart? I don't think so. Maybe a "brick", but that rating would be pretty unusual.

Perhaps The OP might explain what he actually wants to do.

True, true. I was using the term because it's familiar to the OP. Was thinking of something like this.

I was going off the 20mA per individual LED component (aka separate R, G, and B

Yes so that is three times twenty equals sixty mA per LED.

PaulRB:
That's just a dc-dc voltage convertor. It does not supply any power by itself. Where will the power come from?

Yeah, I thought about this in bed last night and thought of a wall-wart, but the huge problem with this is... it needs to be completely mobile because I'm using it for a Halloween costume. Yeah... with that in mind, any suggestions for how I might do that? :stuck_out_tongue:

Look at battery packs lithium

The WS2812s I use need 12v. I think there are 5v models, too. But if yours are 12v, then you need a 12v power supply. Calculate the required current then go 50% over it for the PS rating. Let things run cool is what I plan for. They last longer that way.

Connect the grounds together and let either a 5v or higher supply the Uno and 12v goes to the LEDs. You can power the Uno with 12v via the coaxial connector but it could get the regulator hot if too much is going on there. I got a 7.5 volt wall wart and that works great. Nothing gets hot from too much drop in the regulator.

They you should be good to go.

Mike

MikeyMoMo:
The WS2812s I use need 12v. I think there are 5v models, too.

Yeah, mine definitely says 5V on the strip. Good thought, though.

Grumpy_Mike:
Look at battery packs lithium

I hadn't thought of that... would something like these batteries I found work if I just hooked up 3 or 4 of them in series?

The 12volt strips light up three RGB LEDs at the same time.
One IC controls three RGB LEDs. No individual LED RGB control.
The 5volt strips use one control IC per RGB LED.

Big 5volt supplies are not easy to find, and expesive.
An old laptop supply (12-19.5volt) and a 10Amp buck converter might work.
http://www.ebay.com/itm/DC-DC-CC-CV-Buck-Converter-Step-down-Power-Supply-Module-7-32V-to-0-8-28V-12A-HC-/261997095157?hash=item3d003e68f5
A buck converter lowers voltage, and increases current.
Leo..

Wawa:
The 12volt strips light up three RGB LEDs at the same time.
One IC controls three RGB LEDs. No individual LED RGB control.
The 5volt strips use one control IC per RGB LED.

Correct; I also have a different 12v strip that I'm not using for that reason. But... Are you saying the battery I found won't work?

Just saw that you want it to be mobile.

LiPo batteries won't work, unless you use a buck converter.

The voltage of one LiPo battery is too low for the LEDs to reliably work.
And two in series will kill the chips (absloute max 5.5volt).

?? max discharge current of the batteries in your link is 400mA

For that amount of power I would use a 3-Cell LiPo RC car battery pack (with a balance charger).
And step the voltage down to 5volt with two buck converters, one connected to each end of the strip.
Then they don't fight each other.
These seem to be efficient. Pololu 5V, 5A Step-Down Voltage Regulator D24V50F5
The one you listed might also work.
Leo..

So if I get the buck converter from ebay I linked to, which I'd prefer due to the significant price difference, then what do I do with it? I'm not familiar with this. More specifically, how much voltage/amperage should I feed it and what do the 2 pots on it do? Also, I'd only need one of these ones, right?

What you pay is what you get.
The cheaper one might have a higher dropout voltage and is likely less efficient.
The Pololu converters are also fixed voltage (easy).

One pot controls the output voltage, the other one limits the output current.
Trim to 5volt (with a small load attached) before you connect it to the LED strip.
You need at least a 2-cell LiPo. A 3-cell would be better (less current draw).

Let the Arduino monitor battery voltage.
The Pololu converters have an enable input to shut them down.
Leo..