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