Duda en el funcionamiento de mi codigo

Hola buen dia , soy "nuevo" en arduino soy un estudiante , ¿me podrian ayudar a sulucionar mi codigo ? es una ruleta donde mediante un rele activa la maquina toques , sin embargo necesito que si sale el led numero 3 se active el rele y no con algun otro led , pero mi codigo activa el rele con cuaquier led que salga

les dejo mi link de tinkercad: https://www.tinkercad.com/things/6WrMwAeac8V-ruleta-?sharecode=lgzJdwxTCQ2cWrWtLfhqS4Fxr7i8uxrAjg_G7FLM2Vs

y mi codigo :

const int numLEDs = 6;
const int pinLEDs[numLEDs] = {2, 3, 4, 5, 6, 7};  // Cambiar los pines según tu configuración
const int pinButton = 8;
const int pinRelay = 9;  // Cambiar el pin del relé según tu configuración

int winningLED;  // Número de LED que activará el relé

void setup() {
  pinMode(pinButton, INPUT_PULLUP);
  pinMode(pinRelay, OUTPUT);

  for (int i = 0; i < numLEDs; i++) {
    pinMode(pinLEDs[i], OUTPUT);
  }

  // Apaga todos los LEDs al inicio
  turnOffLEDs();
}

void loop() {
  if (digitalRead(pinButton) == LOW) {
    spinRoulette();
    delay(2000);  // Girar la ruleta por 2 segundos (ajusta la velocidad aquí)

    // Detener la ruleta y activar el LED ganador
    turnOffLEDs();
    activateLED(winningLED);

    delay(500);  // Puedes ajustar este tiempo según tus preferencias
    
    if (winningLED == 3 ) ; {
      
       digitalWrite(pinRelay, HIGH);
  	   delay(1000);  // Tiempo que el relé está activado (ajusta según lo desees)
       digitalWrite(pinRelay, LOW);
    }

    // Apaga todos los LEDs después de cada intento
    turnOffLEDs();
  }
}

void spinRoulette() {
  // Gira la ruleta durante un tiempo aleatorio
  int spinTime = random(500, 1500);  // Tiempo de giro entre 0.5 y 1.5 segundos (ajusta según lo desees)
  unsigned long startTime = millis();

  while (millis() - startTime < spinTime) {
    // Enciende y apaga los LEDs en secuencia para simular el giro
    for (int i = 0; i < numLEDs; i++) {
      activateLED(i);
      delay(100);  // Puedes ajustar este tiempo según tus preferencias
      turnOffLEDs();
    }
  }

  // Establece un resultado aleatorio al detenerse
  winningLED = random(numLEDs);
}

void activateLED(int ledNumber) {
  digitalWrite(pinLEDs[ledNumber], HIGH);
}

void turnOffLEDs() {
  for (int i = 0; i < numLEDs; i++) {
    digitalWrite(pinLEDs[i], LOW);
  }
}

les agradesco su tiempo tomado al leer mi problema

Hola.

¿ Que hace ahí ese punto y coma ?. Quítalo.

Saludos.

1 Like

hola probe al quitar el ; pero ahora el rele no prende con ninguno gracias por tratar de ayudarme
saludos

Se paciente con el Tinkercad, sigue pulsando hasta que te toque el led de la izquierda de los dos colocados mas abajo en el circuito, con el y solo con el se enciende el rele.

encerio ? bueno seguire tirando gracias

cierto bro gracias ya funciona que crack

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.