Gracias donrodrigo.
He probado el circuito que me has enviado, aunque solo con 2 TLC. Cuando me funcione con 2, añadiré hasta 5 que son los que necesito.
El circuito es el mismo que tengo montado yo. Lo acabo de revisar y está todo igual. Tan solo, que yo había puesto también una resistencia de 10k para el BLANK del 2º IC, pero nada más. Aún quitándola sigue sin funcionar bien.
Doy por hecho que los led del segundo TLC se llamarán 17, 18, 19......, verdad?.
Te pongo el código por si tal vez me pudieras decir si es que tengo algo mal.
He seguido vuestras indicaciones y gracias a eso me ha salido muy cortito aunque esto es solo para probar. Cuando consiga que funcione tendré que ampliarlo.
La secuencia es: en el primer TLC y empezando desde el centro, se encienden 8 leds de dos. Es decir 4 hacia cada lado.
Luego se encienden los 4 primeros también del primer TLC y después los 4 últimos también del primer TLC.
Pues con este código, como os digo, en el segundo TLC, del led 6 al 14 están siempre encendidos. Pero es que, cuando el código llega a que se enciendan del 1º al 4º del primero, también se encienden del 1 al 4 del segundo TLC.
Y luego, en una carpeta a la que he llamado "librería TLC5940" me he metido en el archivo " tlc_config.h" y he cambiado el número de TLC, de esta manera:
/* ------------------------ START EDITING HERE ----------------------------- */
/** Number of TLCs daisy-chained. To daisy-chain, attach the SOUT (TLC pin 17)
of the first TLC to the SIN (TLC pin 26) of the next. The rest of the pins
are attached normally.
\note Each TLC needs it's own IREF resistor */
#define NUM_TLCS 2
Te digo lo de que yo he llamado de tal manera a la carpeta por si acaso estuviera mal el haberle cambiado el nombre y se tiene que llamar de otra forma.
Aquí, el código:
#include "Tlc5940.h"
void setup()
{
/* Call Tlc.init() to setup the tlc.
You can optionally pass an initial PWM value (0 - 4095) for all channels.*/
Tlc.init();
}
void dosled(int a, int b) {
for (int i= 1000; i>= 10; i= i-5) {
Tlc.set(a, i);
Tlc.set(b, i);
Tlc.update();
delay(2);
}
Tlc.set(a, 0);
Tlc.set(b, 0);
Tlc.update();
}
void cuatroled(int a, int b, int c, int d) {
for (int i= 1000; i>= 10; i= i-5) {
Tlc.set(a, i);
Tlc.set(b, i);
Tlc.set(c, i);
Tlc.set(d, i);
Tlc.update();
delay(2);
}
Tlc.set(a, 0);
Tlc.set(b, 0);
Tlc.set(c, 0);
Tlc.set(d, 0);
Tlc.update();
}
void loop()
{
void dosled(int a, int b);
void cuatroled(int a, int b, int c, int d);
Tlc.clear();
dosled(7,8);
dosled(6,9);
dosled(5,10);
dosled(4,11);
cuatroled(0,1,2,3);
cuatroled(12,13,14,15);
delay (3000);
}
Por favor, cualquier idea será bien recibida.
Muchas gracias.
Saludos.