tira led driver hl1606

hola, el proyecto que quiero hacer es con la tira led digital http://code.google.com/p/ledstrip/ no tengo mucha idea con la programación y mi proyecto solo seria hacer correr a los leds de uno en uno (el color es indifernte, por ahora)y controlar el tiempo de encendido, apagado y su dirección. Si alguien pudiese ayudarme con la programción, estaria muy agradecido y seguro ke alguna otra persona le interesa esta tira de leds. http://bleaklow.com:80/2010/05/24/how_the_hl1606_works.html

He conseguido lo que me proponía, pero el código es un poco largo o rudimentario (novato e inexperto).Funciona!?aunque en la vuelta de los led, se enciende el que yo quiero pero los otros parpadean un poquito (casi no se nota). Se podria hacer de alguna otra manera? mas limpio y que los led no parpadearan a la vuelta.

La tira que tengo es de 20 leds y 10 hl1606 y un solo led encendido, realiza ida y vuelta.

void loop() { digitalWrite(latchPin, LOW); digitalWrite(latchPin, HIGH);

shiftOut(dataPin, clockPin, MSBFIRST,250); //1 delay(500); shiftOut(dataPin, clockPin, MSBFIRST,LOW); //2 delay(500); shiftOut(dataPin, clockPin, MSBFIRST,LOW); //3 delay(500); shiftOut(dataPin, clockPin, MSBFIRST,LOW); //4 delay(500); shiftOut(dataPin, clockPin, MSBFIRST,LOW); //5 delay(500); shiftOut(dataPin, clockPin, MSBFIRST,LOW); //6 delay(500); shiftOut(dataPin, clockPin, MSBFIRST,LOW); //7 delay(500); shiftOut(dataPin, clockPin, MSBFIRST,LOW); //8 delay(500); shiftOut(dataPin, clockPin, MSBFIRST,LOW); //9 delay(500); shiftOut(dataPin, clockPin, MSBFIRST,LOW); //10 delay(500); shiftOut(dataPin, clockPin, MSBFIRST,LOW); //11 delay(500); shiftOut(dataPin, clockPin, MSBFIRST,LOW); //12 delay(500); shiftOut(dataPin, clockPin, MSBFIRST,LOW); //13 delay(500); shiftOut(dataPin, clockPin, MSBFIRST,LOW); //14 delay(500); shiftOut(dataPin, clockPin, MSBFIRST,LOW); //15 delay(500); shiftOut(dataPin, clockPin, MSBFIRST,LOW); //16 delay(500); shiftOut(dataPin, clockPin, MSBFIRST,LOW); //17 delay(500); shiftOut(dataPin, clockPin, MSBFIRST,LOW); //18 delay(500); shiftOut(dataPin, clockPin, MSBFIRST,LOW); //19 delay(500); shiftOut(dataPin, clockPin, MSBFIRST,LOW); //20 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //20 //------------------VUELTA-------------------------- //--------------------20-----------------------------

shiftOut(dataPin, clockPin, MSBFIRST,250); //1 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //2 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //3 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //4 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //5 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //6 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //7 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //8 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //9 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //10 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //11 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //12 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //13 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //14 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //15 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //16 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //17 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //18 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //19 digitalWrite(latchPin, HIGH); shiftOut(dataPin, clockPin, MSBFIRST,LOW); //X delay(500); shiftOut(dataPin, clockPin, MSBFIRST,LOW); //20 digitalWrite(latchPin, LOW); //--------------------19-----------------------------

shiftOut(dataPin, clockPin, MSBFIRST,250); //1 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //2 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //3 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //4 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //5 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //6 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //7 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //8 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //9 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //10 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //11 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //12 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //13 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //14 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //15 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //16 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //17 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //18 digitalWrite(latchPin, HIGH); shiftOut(dataPin, clockPin, MSBFIRST,LOW); //X delay(500); shiftOut(dataPin, clockPin, MSBFIRST,LOW); //20 shiftOut(dataPin, clockPin, MSBFIRST,LOW); //20 digitalWrite(latchPin, LOW); ........ y así hasta volver al led 1