Shift Registers

I am trying to modify Arduino Shift register Tutorial example 2.3. I am trying to make it controll four 74HC595 shift registers.

//**************************************************************//
//  Name    : shiftOutCode, PBLUEefined Dual Array Style         //
//  Author  : Carlyn Maw, Tom Igoe                              //
//  Date    : 25 Oct, 2006                                      //
//  Version : 1.0                                               //
//  Notes   : Code for using a 74HC595 Shift Register           //
//          : to count from 0 to 255                            //
//****************************************************************

//Pin connected to ST_CP of 74HC595
int latchPin = 11;
//Pin connected to SH_CP of 74HC595
int clockPin = 13;
////Pin connected to DS of 74HC595
int dataPin = 10;

//holders for infromation you're going to pass to shifting function
byte dataBLUE;
byte dataRED;
byte dataGREEN;
byte dataGROUND;
byte dataArrayBLUE[4];
byte dataArrayRED[4];
byte dataArrayGREEN[4];
byte dataArrayGROUND[4];


void setup() {
  //set pins to output because they are addressed in the main loop
  pinMode(latchPin, OUTPUT);
  Serial.begin(9600);

  //Arduino doesn't seem to have a way to write binary straight into the code 
  //so these values are in HEX.  Decimal would have been fine, too. 
  dataArrayBLUE[0] = 0x00; //11111111
  dataArrayBLUE[1] = 0x00; //00000000
  dataArrayBLUE[2] = 0xFF; //00000000
  dataArrayBLUE[3] = 0xFF; //11111111

  //Arduino doesn't seem to have a way to write binary straight into the code 
  //so these values are in HEX.  Decimal would have been fine, too. 
  dataArrayRED[0] = 0x00; //11111111
  dataArrayRED[1] = 0x00; //01111111
  dataArrayRED[2] = 0xFF; //00111111
  dataArrayRED[3] = 0xFF; //00011111

  //Arduino doesn't seem to have a way to write binary straight into the code 
  //so these values are in HEX.  Decimal would have been fine, too. 
  dataArrayGREEN[0] = 0x00; //11111111
  dataArrayGREEN[1] = 0x00; //01111111
  dataArrayGREEN[2] = 0xFF; //00111111
  dataArrayGREEN[3] = 0xFF; //00011111

  //Arduino doesn't seem to have a way to write binary straight into the code 
  //so these values are in HEX.  Decimal would have been fine, too. 
  dataArrayGROUND[0] = 0x00; //11111111
  dataArrayGROUND[1] = 0x00; //01111111
  dataArrayGROUND[2] = 0xFF; //00111111
  dataArrayGROUND[3] = 0xFF; //00011111

  //function that blinks all the LEDs
  //gets passed the number of blinks and the pause time
  blinkAll_2Bytes(2,500); 
}

void loop() {


  for (int j = 0; j < 4; j++) {
    //load the light sequence you want from array
    dataGREEN = dataArrayGREEN[j];
    dataBLUE = dataArrayBLUE[j];
    dataRED = dataArrayRED[j];
    dataGROUND = dataArrayGROUND[j];
    //ground latchPin and hold low for as long as you are transmitting
    digitalWrite(latchPin, 0);
    //move 'em out
    shiftOut(dataPin, clockPin, dataGREEN);
    shiftOut(dataPin, clockPin, dataBLUE);
    shiftOut(dataPin, clockPin, dataRED);
    shiftOut(dataPin, clockPin, dataGROUND);
    //return the latch pin high to signal chip that it 
    //no longer needs to listen for information
    digitalWrite(latchPin, 1);
    delay(300);
  }
}



// the heart of the program
void shiftOut(int myDataPin, int myClockPin, byte myDataOut) {
  // This shifts 8 bits out MSB first, 
  //on the rising edge of the clock,
  //clock idles low

  //internal function setup
  int i=0;
  int pinState;
  pinMode(myClockPin, OUTPUT);
  pinMode(myDataPin, OUTPUT);

  //clear everything out just in case to
  //prepare shift register for bit shifting
  digitalWrite(myDataPin, 0);
  digitalWrite(myClockPin, 0);

  //for each bit in the byte myDataOut[ch65533]
  //NOTICE THAT WE ARE COUNTING DOWN in our for loop
  //This means that %00000001 or "1" will go through such
  //that it will be pin Q0 that lights. 
  for (i=7; i>=0; i--)  {
    digitalWrite(myClockPin, 0);

    //if the value passed to myDataOut and a bitmask result 
    // true then... so if we are at i=6 and our value is
    // %11010100 it would the code compares it to %01000000 
    // and proceeds to set pinState to 1.
    if ( myDataOut & (1<<i) ) {
      pinState= 1;
    }
    else {      
      pinState= 0;
    }

    //Sets the pin to HIGH or LOW depending on pinState
    digitalWrite(myDataPin, pinState);
    //register shifts bits on upstroke of clock pin  
    digitalWrite(myClockPin, 1);
    //zero the data pin after shift to prevent bleed through
    digitalWrite(myDataPin, 0);
  }

  //stop shifting
  digitalWrite(myClockPin, 0);
}


//blinks the whole register based on the number of times you want to 
//blink "n" and the pause between them "d"
//starts with a moment of darkness to make sure the first blink
//has its full visual effect.
void blinkAll_2Bytes(int n, int d) {
  digitalWrite(latchPin, 0);
  shiftOut(dataPin, clockPin, 0);
  shiftOut(dataPin, clockPin, 0);
  shiftOut(dataPin, clockPin, 0);
  shiftOut(dataPin, clockPin, 0);
  digitalWrite(latchPin, 1);
  delay(200);
  for (int x = 0; x < n; x++) {
    digitalWrite(latchPin, 0);
    shiftOut(dataPin, clockPin, 255);
    shiftOut(dataPin, clockPin, 255);
    shiftOut(dataPin, clockPin, 255);
    shiftOut(dataPin, clockPin, 255);
    digitalWrite(latchPin, 1);
    delay(d);
    digitalWrite(latchPin, 0);
    shiftOut(dataPin, clockPin, 0);
    shiftOut(dataPin, clockPin, 0);
    shiftOut(dataPin, clockPin, 0);
    shiftOut(dataPin, clockPin, 0);
    digitalWrite(latchPin, 1);
    delay(d);
  }
}

When I run that code, noting hapens. Only, that Led on arduino board blinks. What is wrong with my code?

I solve this. When ground is FF it means all are open. And When colors are 00 that means all are open. So Colors are invert.

//**************************************************************//
//  Name    : shiftOutCode, PREDefined Dual Array Style         //
//  Author  : Carlyn Maw, Tom Igoe                              //
//  Date    : 25 Oct, 2006                                      //
//  Version : 1.0                                               //
//  Notes   : Code for using a 74HC595 Shift Register           //
//          : to count from 0 to 255                            //
//****************************************************************
#include <stdio.h>

//Pin connected to ST_CP of 74HC595
int latchPin = 11;
//Pin connected to SH_CP of 74HC595
int clockPin = 13;
////Pin connected to DS of 74HC595
int dataPin = 10;

//holders for infromation you're going to pass to shifting function
byte dataRED;
byte dataBLUE;
byte dataGROUND;
byte dataGREEN;
byte dataArrayRED[4];
byte dataArrayBLUE[4];
byte dataArrayGROUND[4];
byte dataArrayGREEN[4];


void setup() {
  //set pins to output because they are addressed in the main loop
  pinMode(latchPin, OUTPUT);
  Serial.begin(9600);

  //Arduino doesn't seem to have a way to write binary straight into the code
  //so these values are in HEX.  Decimal would have been fine, too.
  dataArrayRED[0] = 0x00; //11111111
  dataArrayRED[1] = 0xFF; //00000000
  dataArrayRED[2] = 0xFF; //00000000
  dataArrayRED[3] = 0x00; //11111111

  //Arduino doesn't seem to have a way to write binary straight into the code
  //so these values are in HEX.  Decimal would have been fine, too.
  dataArrayBLUE[0] = 0xFF; //11111111
  dataArrayBLUE[1] = 0x00; //01111111
  dataArrayBLUE[2] = 0xFF; //00111111
  dataArrayBLUE[3] = 0x00; //00011111

  //Arduino doesn't seem to have a way to write binary straight into the code
  //so these values are in HEX.  Decimal would have been fine, too.
  dataArrayGROUND[0] = 0xFF; //11111111
  dataArrayGROUND[1] = 0xFF; //01111111
  dataArrayGROUND[2] = 0xFF; //00111111
  dataArrayGROUND[3] = 0xFF; //00011111

  //Arduino doesn't seem to have a way to write binary straight into the code
  //so these values are in HEX.  Decimal would have been fine, too.
  dataArrayGREEN[0] = 0xFF; //11111111
  dataArrayGREEN[1] = 0xFF; //01111111
  dataArrayGREEN[2] = 0x00; //00111111
  dataArrayGREEN[3] = 0x00; //00011111

  //function that blinks all the LEDs
  //gets passed the number of blinks and the pause time
  blinkAll_2Bytes(2,500);
}

void loop() {


  for (int j = 0; j < 4; j++) {
    //load the light sequence you want from array
    dataGROUND = dataArrayGROUND[j];
    dataRED = dataArrayRED[j];
    dataBLUE = dataArrayBLUE[j];
    dataGREEN = dataArrayGREEN[j];
    //GREEN latchPin and hold low for as long as you are transmitting
    digitalWrite(latchPin, 0);
    //move 'em out
    char tmp[64];
    shiftOut(dataPin, clockPin, dataGROUND);
    shiftOut(dataPin, clockPin, dataRED);
    shiftOut(dataPin, clockPin, dataBLUE);
    shiftOut(dataPin, clockPin, dataGREEN);
    sprintf(tmp, "%x %x %x %x",dataGROUND,dataRED,dataBLUE,dataGREEN);
    Serial.println(tmp);
    //return the latch pin high to signal chip that it
    //no longer needs to listen for information
    digitalWrite(latchPin, 1);
    delay(300);
  }
}



// the heart of the program
void shiftOut(int myDataPin, int myClockPin, byte myDataOut) {
  // This shifts 8 bits out MSB first,
  //on the rising edge of the clock,
  //clock idles low

  //internal function setup
  int i=0;
  int pinState;
  pinMode(myClockPin, OUTPUT);
  pinMode(myDataPin, OUTPUT);

  //clear everything out just in case to
  //prepare shift register for bit shifting
  digitalWrite(myDataPin, 0);
  digitalWrite(myClockPin, 0);

  //for each bit in the byte myDataOut[ch65533]
  //NOTICE THAT WE ARE COUNTING DOWN in our for loop
  //This means that %00000001 or "1" will go through such
  //that it will be pin Q0 that lights.
  for (i=7; i>=0; i--)  {
    digitalWrite(myClockPin, 0);

    //if the value passed to myDataOut and a bitmask result
    // true then... so if we are at i=6 and our value is
    // %11010100 it would the code compares it to %01000000
    // and proceeds to set pinState to 1.
    if ( myDataOut & (1<<i) ) {
      pinState= 1;
    }
    else {
      pinState= 0;
    }

    //Sets the pin to HIGH or LOW depending on pinState
    digitalWrite(myDataPin, pinState);
    //register shifts bits on upstroke of clock pin
    digitalWrite(myClockPin, 1);
    //zero the data pin after shift to prevent bleed through
    digitalWrite(myDataPin, 0);
  }

  //stop shifting
  digitalWrite(myClockPin, 0);
}


//blinks the whole register based on the number of times you want to
//blink "n" and the pause between them "d"
//starts with a moment of darkness to make sure the first blink
//has its full visual effect.
void blinkAll_2Bytes(int n, int d) {
  digitalWrite(latchPin, 0);
  shiftOut(dataPin, clockPin, 0);
  shiftOut(dataPin, clockPin, 0);
  shiftOut(dataPin, clockPin, 0);
  shiftOut(dataPin, clockPin, 0);
  digitalWrite(latchPin, 1);
  delay(200);
  for (int x = 0; x < n; x++) {
    digitalWrite(latchPin, 0);
    shiftOut(dataPin, clockPin, 255);
    shiftOut(dataPin, clockPin, 255);
    shiftOut(dataPin, clockPin, 255);
    shiftOut(dataPin, clockPin, 255);
    digitalWrite(latchPin, 1);
    delay(d);
    digitalWrite(latchPin, 0);
    shiftOut(dataPin, clockPin, 0);
    shiftOut(dataPin, clockPin, 0);
    shiftOut(dataPin, clockPin, 0);
    shiftOut(dataPin, clockPin, 0);
    digitalWrite(latchPin, 1);
    delay(d);
  }
}

Is there any way to solve this invert problem?