Hola, tengo un problema con el siguiente statment Switch/case y no entiendo porque. En esta parte del código hay dos variables a y b con valores random del 0 al 5 sin que estos estén repetidos, por ejemplo a=1 y b=4. Lo que me sucede es que da por buena la condición 4 del switch(a) y no entiendo porque. O sea, el código revisa la condición 1 con la variable a y hace lo que toca en el case 1 de a y cuando revisa la condición b con la variable b, veo que entra también en el switch(a) entra en el caso 4 como si el valor de a fuese 4 y no 1...y no entiendo porqué.
A ver si alguién me o aclara ![]()
boolean control = false;
int contador = 0;
while (!control) {
int YellowStatus=digitalRead(BUTTON_YELLOW);
int RedStatus=digitalRead(BUTTON_RED);
int GreenStatus=digitalRead(BUTTON_GREEN);
int BlueStatus=digitalRead(BUTTON_BLUE);
int WhiteStatus=digitalRead(BUTTON_WHITE);
int BlackStatus=digitalRead(BUTTON_BLACK);
switch (a){
case 0:
if (YellowStatus==PRESSED){
digitalWrite(pines[a], LOW);
contador++;
a=100;// Ho posem perque no miri mes aquest pin
break;
}
case 1:
if (RedStatus==PRESSED){
digitalWrite(pines[a], LOW);
contador++;
a=100;// Ho posem perque no miri mes aquest pin
break;
}
case 2:
if (GreenStatus==PRESSED){
digitalWrite(pines[a], LOW);
contador++;
a=100;// Ho posem perque no miri mes aquest pin
break;
}
case 3:
if (BlueStatus==PRESSED){
digitalWrite(pines[a], LOW);
contador++;
a=100;// Ho posem perque no miri mes aquest pin
break;
}
case 4:
if (WhiteStatus==PRESSED){
digitalWrite(pines[a], LOW);
contador++;
a=100;// Ho posem perque no miri mes aquest pin
break;
}
case 5:
if (BlackStatus==PRESSED){
digitalWrite(pines[a], LOW);
contador++;
a=100;// Ho posem perque no miri mes aquest pin
break;
}
default: break;
}
switch (b){
case 0:
if (YellowStatus==PRESSED){
digitalWrite(pines[b], LOW);
contador++;
b=100;// Ho posem perque no miri mes aquest pin
break;
}
case 1:
if (RedStatus==PRESSED){
digitalWrite(pines[b], LOW);
contador++;
b=100;// Ho posem perque no miri mes aquest pin
break;
}
case 2:
if (GreenStatus==PRESSED){
digitalWrite(pines[b], LOW);
contador++;
b=100;// Ho posem perque no miri mes aquest pin
break;
}
case 3:
if (BlueStatus==PRESSED){
digitalWrite(pines[b], LOW);
contador++;
b=100;// Ho posem perque no miri mes aquest pin
break;
}
case 4:
if (WhiteStatus==PRESSED){
digitalWrite(pines[b], LOW);
contador++;
b=100;// Ho posem perque no miri mes aquest pin
break;
}
case 5:
if (BlackStatus==PRESSED){
digitalWrite(pines[b], LOW);
contador++;
b=100;// Ho posem perque no miri mes aquest pin
break;
}
default: break;
}
if (contador==seleccion){ // Si s'han apagat tantes llums com n hi havia enceses surt
control=true;
}
}