Der 595 bringt nicht den Sttrom um die Anoden ansteuern zu können; Du brauchst zusätzliche einen A2983. Grüße Uwe
3 TLC5940 und ein 74HC595 !

#include "Tlc5940.h"
char* Frame;
int Light1[48] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int Light2[48] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
byte Rot[128] = {255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0};
byte Gruen[128] = {255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
255,155,255,155,255,155,255,155,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0};
byte Blau[128] = {255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
byte Zaehler;
int Zufall;
byte Zufall2;
byte inByte;
long Zeit1;
long Zeit2;
byte Neu;
byte Alt;
int Sekunden;
byte MatrixZeile;
const int latchPin = 8; // digital Pin 8 connected to 74HC595 latch pin (ST_CP, Pin 12)
const int clockPin = 6; // digital Pin 6 connected to 74HC595 clock pin (SH_CP, Pin 11)
const int dataPin = 7; // digital Pin 7 connected to 74HC595 Data in (DS, Pin 14)
void setup()
{
Zufall = 0;
Neu = 0;
Alt = 0;
Zeit1 = 0;
Zeit2 = 0;
Tlc.init();
Tlc.clear();
Tlc.update();
randomSeed(analogRead(0));
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
}
void loop() {
byte LedNr;
Tlc.clear();
for (MatrixZeile = 0; MatrixZeile <= 7; MatrixZeile++)
{
for (LedNr = 0; LedNr <= 15; LedNr++)
{
Tlc.set(LedNr, (Rot[MatrixZeile * 16] + LedNr) / 2);
}
for (LedNr = 16; LedNr <= 31; LedNr++)
{
Tlc.set(LedNr, Gruen[(MatrixZeile * 16) + (LedNr - 16)]);
}
for (LedNr = 32; LedNr <= 47; LedNr++)
{
Tlc.set(LedNr, Blau[(MatrixZeile * 16) + (LedNr - 32)]);
}
registerWrite(MatrixZeile, HIGH);
Tlc.update();
delayMicroseconds(500);
}
}
// This method sends bits to the shift register:
void registerWrite(int whichPin, int whichState) {
// the bits you want to send
byte bitsToSend = 0;
// turn off the output so the pins don't light up
// while you're shifting bits:
digitalWrite(latchPin, LOW);
// turn on the next highest bit in bitsToSend:
bitWrite(bitsToSend, whichPin, whichState);
// shift the bits out:
shiftOut(dataPin, clockPin, MSBFIRST, bitsToSend);
// turn on the output so the LEDs can light up:
digitalWrite(latchPin, HIGH);
}
Der Code ist übrigens für 2 Matrixen ausgelegt !