Hi all. Is there a limit on the amount of LEDs one can address and the amount of pins one can use for each LED? At present, I am using the TM1809 and I have 900 of them to drive. I had hoped to break them up into blocks of 150 as the Arduino has 6 PWM pins, thus dividing the load. However, a call to the following appears not to work:
FastLED.addLeds<TM1809, 5>(leds0, NUM_LEDS );
FastLED.addLeds<TM1809, 6>(leds1, NUM_LEDS );
Is it possible to use two seperate channels at all?
Cheers
Ben
PS, the video shows 150 working but I’ve since added another 90 and Im having no joy. I’ve tested these 90 and they do work on their own.
http://www.youtube.com/watch?v=zznY02ffcq0
It is possible to use other pins, though it had nothing to do with PWM (I have one project where I am driving 24 strips off of a mega) - and until I get parallel output working, there’s no huge benefit to multiple lines.
Have you tried other pins? When you say do not work - what are they doing and what pin are you trying? Anything? Nothing?
What arduino are you using? What does the rest of your code look like?
I have 576 WS2811Bs running off an Uno/Micro/Yun, but you start to run into low RAM problems at much more than that (the 32u4 in the Micro/Yun has 2560 bytes of RAM total and each of the 576 pixels needs three bytes…)
thanks for the comments. To answer the questions a little more thoroughly, Im using an Arduino Duemilinove with the Atmega 328 and Arduino 1.0.5
Im running the LEDs from a seperate power supply. Presently, I have 270 LEDs lined up, but only 150 of them respond. The remaining 120 will respond if i take the data line out from the beginning of the rows, to the last few rows (if that makes sense).
The code looks something like this:
#include “FastLED.h”
#define NUM_LEDS 270
CRGB leds[NUM_LEDS];
void setup() {
FastLED.addLeds<TM1809, 5>(leds, NUM_LEDS );
//delay(500);
//FastLED.addLeds<TM1809, 6>(leds1, NUM_LEDS );
valr = valg = valb = 0;
rate = 5;
up = true;
clear_image();
delay(500);
}
void test_func() {
for (unsigned int i=0; i < NUM_LEDS; i++){
leds[i] = CRGB(valb,valr,valg); FastLED.show();
}
delay(10);
if (up){
if (valr < 255) valr+=rate;
else{
if (valg < 255) valg+=rate;
else {
if (valb < 255) valb+=rate;
else
up = false;
}
}
} else {
if (valr > 0) valr-=rate;
else{
if (valg > 0) valg-=rate;
else {
if (valb > 0) valb-=rate;
else
up = true;
}
}
}
}
void loop() {
clear_image();
test_func();
delay(2000);
}
There isnt anything too barbed in there I suspect. I dont know what interface the TM1809 uses (I thought SPI) but I guess I’ll need to take a closer look. At the end, I’ll need to be using about 900 LEDs
How and where is the power hooked up? Put a multimeter across the + and ground at the far end and see if it’s the voltage you expect. If it dips too low you’ll have problems.
Also, you’re going to run out of RAM with 900 LEDs. Each takes 3 bytes, 900 * 3 = 2700 and the ATMega328 only has 2048 bytes of RAM. In my experience once you get to about 80% of your RAM used by the leds[] array you start running into issues—the Arduino libraries themselves use an unspecified but significant amount.
Look into the Teensy 3.1, which has 64k of RAM.
The voltage is good at both ends, and I have had them all light up, though continuity testing on the data line was possibly a problem. I had my doubts as to whether or not an Arduino could cope - I’m honestly not surprised. Teensy3 ordered 
Hold on. Double checking this the Atmega328 has 32K of memory - Surely thats enough?
Ah, you are referring to the data segment as oppose to the program segment. I see your point now.
So, I’ve started with the Teensy3.1 and Im still limited to 150 LEDS on this strip it appears. The remaining 4 strips don’t appear to want to light up. I’ve checked the voltage and its 5v all the way down and the data line is soldered correctly. Not sure what im missing 
The Teensy 3.1 has plenty of RAM for that many LEDs, that shouldn’t be an issue. You said earlier you’d patched the data line in half way down and all the LEDs function? Is that still the case? If so, I’d look for something funny going on in your data line. Make a “ghetto logic probe” (normal through-hole LED with an appropriate resistor soldered to one of the legs) and put it across the data and ground or clock and ground wires at various points to see if your signal is making it all the way down your lines.
It’s not something as silly as you having #defined your NUM_LEDS to the wrong count is it?
I’ll check the signalling. Not a bad idea. In the meantime I’ve gotten around it by addressing the strip in blocks of 5. This was going to be part of my original plan anyway - dividing and conquering. I’ll be getting another 25m of the stuff soon so I’ll try with that and see if i can get it to run the entire lot. Cheers