Njay was kind enough to note a nice way of doing it !
/*este e um caso basico para que possa perceber facilmente qualquer implementacao.
*Pino conectado ao ST_CP do stop*/
int latchPin = 8;
//Pino conectado ao SH_CP of stop
int clockPin = 12;
//Pino conectado ao DS do stop
int dataPin = 11;
int delayInput = 0;//pin para entrada analogica, neste caso um potenciometro
int outDelay =0;//O valor que vamos usar para converter a leitura do pin analogico
//do pot para usar como valor de delay entre accoes
// Saida para 74HC595 (Serial TO Parallel OUT)
void stopout(int numberToDisplay)
{
// baixar o latchPin para low para que
// os LEDs nao mudem enquanto os bits sao enviados:
// digitalWrite(latchPin, LOW);
// passar os bits:
shiftOut(dataPin, clockPin, MSBFIRST, numberToDisplay);
//mudar o latch pin para HIGH para que os leds acendam:
digitalWrite(latchPin, LOW);
digitalWrite(latchPin, HIGH);
}
void setup() {
//Configurar os pins para saida, para poder controlar o shift register
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(delayInput, INPUT);//Atribuir o pin a entrada analogicado potenciometro
//Apagar qualquer memoria que o 74HC595 possa ter da ultima configuracao dos pins
stopout(B00000000);
delay(500);
}
void loop ()
{
outDelay = analogRead (delayInput);
for (unsigned char ctr = 0, mask = 0x80; ctr < 14; ctr++)
{
stopout(mask);
delay(outDelay);
mask = (ctr < 7? mask >> 1: mask << 1);
}
}