Problema con ruleta de casino utilizando 74HC595 SOLUCIONADO

hola, he tenido problemas con este proyecto urgente en el que deseo que los LEDS hagan una secuencia por cierto tiempo y luego se detenga con solo un LED encendido. Soy nuevo en lo que a programación se refiere, y se apenas lo básico. El proyecto consta de 37 LEDS, la secuencia iniciaría cuando se oprimiera un pulsador, después de un tiempo para la secuencia y solo un LED queda encendido, al oprimir de nuevo el pulsador la secuencia continua de nuevo otro intervalo de tiempo. La parte que no se hacer es que pare en un LED cualquiera, porque hasta ahora hace la secuencia cierto número de veces. Necesito ayuda urgente ya que debo entregarlo dentro de dos semanas. muchas gracias.

Pues deberías modificar el curso normal del programa variando el final de la secuencia mediante un número aleatorio.
Echa un vistazo a la función Random

No se como haría eso debido a que utilice la función for, soy muy nuevo, hasta ahora esto es lo que llevo

_74HC595_2.rar (471 Bytes)

Mira a ver si te funciona, y sobre todo a ver si lo entiendes. Cualquier cosa no dudes en preguntar.

int pinData =4;
int pinClock =5;
int pinLatch =6;
int pinButton =2;
int estado =0;

byte led = 0; 
byte leds = 0;

void setup()
{
      pinMode(pinData,OUTPUT);
      pinMode(pinClock,OUTPUT);
      pinMode(pinLatch,OUTPUT);
      pinMode(pinButton, INPUT);
      update();
}

void loop()
{
      int j = random(100,1200); // cargamos j con un aleatorio entre 100 y 1200, que será el número de pulsaciones de la ruleta
      estado = digitalRead(pinButton);
      while (j >0) //iremos decrementándola, y cuando llegue a 0 terminaremos
      {
            //bitSet(leds, led);
            leds = 1 << led; 
            update();
            delay(100);
            j--;
            led++; // incrementamos el led a iluminar
            if (led == 8) led=0; // si se alcanza el led 8 volvemos a principio de ruleta
      }
}

void update()
{
      digitalWrite(pinLatch,LOW);
      shiftOut(pinData,pinClock,LSBFIRST,leds);
      digitalWrite(pinLatch,HIGH);
}

solo crea la secuencia en los Leds pero no se detiene, además el pulsador no sirve de nada

Efectivamente, no he puesto el control del pulsador. Envuelve todo el while en un if (pulsador==HIGH) y lo tienes.
En cuanto a que no pare la secuencia, tal vez sea porque no espera al pulsador. Pon ese if y prueba a ver qué valores máximo y mínimo pones al random.
Saludos

Aun al colocar el if sigue igual, sin pulsador y sin parar

ya lo solucione era error mio, había puesto punto y coma en el if pero funciona perfectamente

Me alegro.
Pon el solucionado en el asunto. Si hay alguna cosa que no entiendas, no dudes en preguntar. Ahora, si quieres currártelo un poquito más podrías hacer que las luces hagan el efecto de parada. Tan solo necesitarías sustituir ese delay(100) por una variable que vaya aumentando inversamente a j.
Saludos.