Segue codigo que utilizei no projeto.// O codigo original e o que esta no link abaixo, fiz algumas adaptacoes para poder visualizar no display de sete seguimentos.// http://arduino.cc/en/Tutorial/ShftOut23// Segue o codigo que adaptei. Janeiro de 2013// Por: Marcelo Victorio.//Pin connected to ST_CP of 74HC595int latchPin = 8;//Pin connected to SH_CP of 74HC595int clockPin = 10;////Pin connected to DS of 74HC595int dataPin = 9;////Pin Sensor Ultrasonic#define trigPin 12#define echoPin 13//holders for infromation you're going to pass to shifting functionbyte dataDISPA;byte dataDISPB;byte dataArrayDISPA[10];byte dataArrayDISPB[10];void setup() { //set pins to output because they are addressed in the main loop pinMode(latchPin, OUTPUT); Serial.begin(9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT);//Marcelo - 26/08/2012 dataArrayDISPA[0] = 0x3F; //00111111 dataArrayDISPA[1] = 0x06; //00000110 dataArrayDISPA[2] = 0x5B; //01011011 dataArrayDISPA[3] = 0x4F; //01001111 dataArrayDISPA[4] = 0x66; //01100110 dataArrayDISPA[5] = 0x6D; //01101101 dataArrayDISPA[6] = 0x7D; //01111101 dataArrayDISPA[7] = 0x07; //00000111 dataArrayDISPA[8] = 0x7F; //01111111 dataArrayDISPA[9] = 0x67; //01100111 dataArrayDISPB[0] = 0x3F; //00111111 dataArrayDISPB[1] = 0x06; //00000110 dataArrayDISPB[2] = 0x5B; //01011011 dataArrayDISPB[3] = 0x4F; //01001111 dataArrayDISPB[4] = 0x66; //01100110 dataArrayDISPB[5] = 0x6D; //01101101 dataArrayDISPB[6] = 0x7D; //01111101 dataArrayDISPB[7] = 0x07; //00000111 dataArrayDISPB[8] = 0x7F; //01111111 dataArrayDISPB[9] = 0x67; //01100111 //function that blinks all the LEDs //gets passed the number of blinks and the pause time blinkAll_2Bytes(2,500); }void loop() { int duration, distance; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration/2) / 29.1; if (distance >= 200 || distance <= 0){ distance = 0; } //load the light sequence you want from array int jj = distance; int x = jj%10; int y = jj/10; dataDISPB = dataArrayDISPB[y]; dataDISPA = dataArrayDISPA[x]; //ground latchPin and hold low for as long as you are transmitting digitalWrite(latchPin, 0); //move 'em out shiftOut(dataPin, clockPin, dataDISPB); shiftOut(dataPin, clockPin, dataDISPA); //return the latch pin high to signal chip that it //no longer needs to listen for information digitalWrite(latchPin, 1); delay(800);}// the heart of the programvoid 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 //NOTICE THAT WE ARE COUNTING DOWN in our for loop //This means that 000001 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