Hola, espero me puedan ayudar, estoy diseñando un juego con 10 tiras de leds ws2812b, cada una esta conectada a un pin del 1 al 10 en una placa Mega, utilizo la libreria Adafruit_NeoPixel y este el sketch basico para probar:
#include <Adafruit_NeoPixel.h>
#define Numpixels 300
//*** DEFINO LAS COLUMNAS CON EL PIN CORRESPONDIENTE
#define PIN_1 1
#define PIN_2 2
#define PIN_3 3
#define PIN_4 4
#define PIN_5 5
#define PIN_6 6
#define PIN_7 7
#define PIN_8 8
#define PIN_9 9
#define PIN_10 10
Adafruit_NeoPixel Columna_1 = Adafruit_NeoPixel (Numpixels, PIN_1);
Adafruit_NeoPixel Columna_2 = Adafruit_NeoPixel (Numpixels, PIN_2);
Adafruit_NeoPixel Columna_3 = Adafruit_NeoPixel (Numpixels, PIN_3);
Adafruit_NeoPixel Columna_4 = Adafruit_NeoPixel (Numpixels, PIN_4);
Adafruit_NeoPixel Columna_5 = Adafruit_NeoPixel (Numpixels, PIN_5);
Adafruit_NeoPixel Columna_6 = Adafruit_NeoPixel (Numpixels, PIN_6);
Adafruit_NeoPixel Columna_7 = Adafruit_NeoPixel (Numpixels, PIN_7);
Adafruit_NeoPixel Columna_8 = Adafruit_NeoPixel (Numpixels, PIN_8);
Adafruit_NeoPixel Columna_9 = Adafruit_NeoPixel (Numpixels, PIN_9);
Adafruit_NeoPixel Columna_10 = Adafruit_NeoPixel (Numpixels,PIN_10);
void setup()
{
//*** INICIALIZO LAS COLUMNAS DE LEDS
Columna_1.begin();
Columna_2.begin();
Columna_3.begin();
Columna_4.begin();
Columna_5.begin();
Columna_6.begin();
Columna_7.begin();
Columna_8.begin();
Columna_9.begin();
Columna_10.begin();
}
void loop()
{
Columna_1.fill(Columna_1.Color(150,0,0));
Columna_1.show();
delay(200);
Columna_1.clear();
Columna_1.show();
Columna_2.fill(Columna_2.Color(150,0,0));
Columna_2.show();
delay(200);
Columna_2.clear();
Columna_2.show();
Columna_3.fill(Columna_3.Color(150,0,0));
Columna_3.show();
delay(200);
Columna_3.clear();
Columna_3.show();
Columna_4.fill(Columna_4.Color(150,0,0));
Columna_4.show();
delay(200);
Columna_4.clear();
Columna_4.show();
Columna_5.fill(Columna_5.Color(150,0,0));
Columna_5.show();
delay(200);
Columna_5.clear();
Columna_5.show();
Columna_6.fill(Columna_6.Color(150,0,0));
Columna_6.show();
delay(200);
Columna_6.clear();
Columna_6.show();
Columna_7.fill(Columna_7.Color(150,0,0));
Columna_7.show();
delay(200);
Columna_7.clear();
Columna_7.show();
Columna_8.fill(Columna_8.Color(150,0,0));
Columna_8.show();
delay(200);
Columna_8.clear();
Columna_8.show();
Columna_9.fill(Columna_9.Color(150,0,0));
Columna_9.show();
delay(200);
Columna_9.clear();
Columna_9.show();
Columna_10.fill(Columna_10.Color(150,0,0));
Columna_10.show();
delay(200);
Columna_10.clear();
Columna_10.show();
}
El codigo es mas complejo pero use este para probar el funcionamiento y las conexiones. Del 1 al 8 funciona bien, cuando debe encender la tira 9 y 10, no lo hace. Ahora, si comento cualquiera de las otras tiras para que no la ejecute, la 9 y la 10 funcionan, es como si 8 fuera el limite, pero ademas no estan todas encendidas, es una tira a la vez. No logro descubrir el problema.
No quiero tener que conectar dos tiras unidas y manejar desde el led 0 a 299 una columna y de la 300 hasta 599 la otra columna y asi tener solo 5 pines utilizados. La fuente de alimentacion de las tiras es externa y puse una resistencia de 470 ohms en cada pin.
Agradeceria toda ayuda posible.