programando un 74hc595 display 7 segmentos

A ver si alguien sabe el por qué de esto:
las conexiones que he hecho son las siguientes: Breadboard layout for 7 Segment LED Counter | Arduino, 74HC5… | Flickr
y el código que he utilizado,este:

const int latchPin = 3;
const int dataPin = 5;
const int clockPin = 2;

void setup() {
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);
}

void loop() {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, CodigoBinario);
digitalWrite(latchPin, HIGH);
delay(1000);
}

y donde pone CodigoBinario he ido poniendo según el esquema del display los segmentos que quería activar con un 1 y los que no con un 0 pero no funciona bien y se encienden sin seguir un orden correcto, incluso muestra dígitos sin sentido

Debes revisar si las conexiones corresponden a cada segmento y a su vez cada bit con el correcto.
Bit 1 -> segmento a
Bit 2 -> segmento b
Bit 3 -> segmento c
......

Ya está todo claro, al final lo he dejado així:

const int latchPin = 3;
const int dataPin = 5;
const int clockPin = 2;
const byte num[10] = {
                      0b00000001,
                      0b10010111,
                      0b00100010,
                      0b00000110,
                      0b10010100,
                      0b01000100,
                      0b01000000,
                      0b00010111,
                      0b00000000,
                      0b00000100
                      };
int i = 0;

void setup() {
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);
}

void loop() {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, num[i]);
digitalWrite(latchPin, HIGH);
if(i<9) i++;
else i = 0;
delay(1000);
}