Help with 74ACT299 shift register

I'm using a 74ACT299PC universal shift register to control 8 pins on common anode LEDs.

Spec sheet: 74ACT299PC pdf, 74ACT299PC Description, 74ACT299PC Datasheet, 74ACT299PC view ::: ALLDATASHEET :::

And here is what I wired up:

Digital Pin 5 = DS0 (dataPin)
Digital Pin 6 = CP (clockPin)
Digital Pin 7 = S0 (latch pin)

I think I'm close to understanding the way the code works to write the data to the shift register and then turn on the LEDs but everything I have tried so far doesn't work.

I was hoping someone could look at this and see if I have everything wired correctly, and if that is the case I know it's just a matter of figuring out the code.

Thanks in advance.

You might want to enable the outputs with the OE pin!

Hows that? Forgive my noobness.

The spec sheet says:

A HIGH signal on either OE1 or OE2 disables the 3-STATE buffers and puts the I/O pins in the high impedence state. In this condition the shift, hold, load and reset operations can still occur. The 3-STATE buffers are also disabled by HIGH signalson both S0 and S1 in preparation for a parallel load operation.

I don't quite know what the 3-STATE buffer is and how it plays into the operation of the shift register.

With the examples of the 74HC595 it's a bit straightforward as there are only 3 pins control the shift register.

But how would this be different? Are there different connections that I need to make or pins I need to toggle?

This is the code I am using. I'm just trying to get the very very very very basics of it to work and make sure I have it wired properly. I'll worry about byte arrays and everything else later. Right now I just want to prove that I can do it.

int latchPin = 7;
int clockPin = 6;
int dataPin = 5;

void setup() {
//set pins to output
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}

void loop() {

digitalWrite(latchPin, LOW); //set latchPin low to allow data flow

digitalWrite(dataPin, LOW);
digitalWrite(clockPin, LOW); // for each bit in dataOut send out a bit

digitalWrite(dataPin, LOW); //sets dataPin to HIGH or LOW depending on pinState
digitalWrite(clockPin, HIGH); //write the data
digitalWrite(clockPin,LOW);

digitalWrite(dataPin, HIGH); //sets dataPin to HIGH or LOW depending on pinState
digitalWrite(clockPin, HIGH); //write the data
digitalWrite(clockPin,LOW);

digitalWrite(dataPin, LOW); //sets dataPin to HIGH or LOW depending on pinState
digitalWrite(clockPin, HIGH); //write the data
digitalWrite(clockPin,LOW);

digitalWrite(dataPin, HIGH); //sets dataPin to HIGH or LOW depending on pinState
digitalWrite(clockPin, HIGH); //write the data
digitalWrite(clockPin,LOW);

digitalWrite(dataPin, LOW); //sets dataPin to HIGH or LOW depending on pinState
digitalWrite(clockPin, HIGH); //write the data
digitalWrite(clockPin,LOW);

digitalWrite(dataPin, HIGH); //sets dataPin to HIGH or LOW depending on pinState
digitalWrite(clockPin, HIGH); //write the data
digitalWrite(clockPin,LOW);

digitalWrite(dataPin, LOW); //sets dataPin to HIGH or LOW depending on pinState
digitalWrite(clockPin, HIGH); //write the data
digitalWrite(clockPin,LOW);

digitalWrite(latchPin, HIGH); //set latchPin to high to lock and send data
delay(500);

}