Christmas Light Controller using 74HC595 's and Arduino Nano

Hello People of the Arduino Forum!

I am currently working on designing a Christmas light controller that works with the free lighting control software Vixen. I am rather noob-ish with Arduino and have not done anything on such a large scale as this. It utilizes 74HC595 Shift registers to send the commands to the solid state relays. I wanted to know if (1) I wired up this circuit correctly, (2) Whether What I want to do will actually work, and (3) help me see if I am on the right track with some preliminary code.

My Schematic:

These boards are meant to be daisy chained to each other through the in and out headers

My Pcb:

I thought it might help…

Here is the code:

I wanted to incorporate future boards that I will daisy-chain onto the Arduino nano.

#include <CShiftPWM.h>
#include <ShiftPWM.h>

const int ShiftPWM_latchPin=8;

const bool ShiftPWM_invertOutputs = false;

const bool ShiftPWM_balanceLoad = false;

unsigned char maxBrightness = 255;
unsigned char pwmFrequency = 75;
int numRegisters = 96;
int numRGBleds = numRegisters*8/3;
int i = 0;
int incomingByte[796];

void setup(){


ShiftPWM.SetPinGrouping(1); //This is the default, but I added here to demonstrate how to use the funtion


void loop()
if (Serial.available() >= 796)
for (int i=0; i<16;i++)
incomingByte =;
ShiftPWM.SetOne(0, incomingByte[0]);
ShiftPWM.SetOne(1, incomingByte[1]);
ShiftPWM.SetOne(2, incomingByte[2]);
ShiftPWM.SetOne(3, incomingByte[3]);
ShiftPWM.SetOne(4, incomingByte[4]);
ShiftPWM.SetOne(5, incomingByte[5]);
ShiftPWM.SetOne(6, incomingByte[6]);
ShiftPWM.SetOne(7, incomingByte[7]);
ShiftPWM.SetOne(8, incomingByte[8]);
ShiftPWM.SetOne(9, incomingByte[9]);
ShiftPWM.SetOne(10, incomingByte[10]);
ShiftPWM.SetOne(11, incomingByte[11]);
ShiftPWM.SetOne(12, incomingByte[12]);
ShiftPWM.SetOne(13, incomingByte[13]);
ShiftPWM.SetOne(14, incomingByte[14]);
ShiftPWM.SetOne(15, incomingByte[15]);
ShiftPWM.SetOne(16, incomingByte[16]);
ShiftPWM.SetOne(17, incomingByte[17]);
ShiftPWM.SetOne(18, incomingByte[18]);
ShiftPWM.SetOne(19, incomingByte[19]);
ShiftPWM.SetOne(20, incomingByte[20]);
ShiftPWM.SetOne(21, incomingByte[21]);
ShiftPWM.SetOne(22, incomingByte[22]);
ShiftPWM.SetOne(23, incomingByte[23]);
ShiftPWM.SetOne(24, incomingByte[24]);
ShiftPWM.SetOne(25, incomingByte[25]);
ShiftPWM.SetOne(26, incomingByte[26]);
ShiftPWM.SetOne(27, incomingByte[27]);
ShiftPWM.SetOne(28, incomingByte[28]);
ShiftPWM.SetOne(29, incomingByte[29]);
ShiftPWM.SetOne(30, incomingByte[30]);
ShiftPWM.SetOne(31, incomingByte[31]);
ShiftPWM.SetOne(32, incomingByte[32]);
ShiftPWM.SetOne(33, incomingByte[33]);
(And a whole bunch more of those going up to 796)
I want this code to read the serial output from Vixen and then dim the lights accordingly, I used the shiftPWM library found here: I thought that I might be able to use that to help the code actually do something.
One more thing: These are the Solid State Relays I plan to use :They are on Ebay Here
Any help/guidance with this is much appreciated!
Thank you for all of your help,

The nature of SSRs makes then unsuitable for PWM. Low voltage and MOSFETS can be used. U may also look for proper LED-driver ICs

is this what you want to do ?