Control de velocidad de contador

Necesito ayuda, no entiendo porqué el cuarto else if no me funciona (el que utiliza la funcion AND “&&”). Ese else if debería de activar el 4 caso del Switch Case, pero no funciona, alguien sabe porqué?

byte Display[10] = {0b11111100, 0b01100000, 0b11011010, 0b11110010, 0b01100110, 0b10110110, 0b10111110, 0b11100000, 0b11111110, 0b11110110};
#define PULS1 8
#define PULS2 9
#define PULS3 10
int velocidad1;
int velocidad2;
int velocidad3;
int cambio;
int valor = 0;

void setup() {
pinMode(PULS1, INPUT);
pinMode(PULS2, INPUT);
pinMode(PULS3, INPUT);
DDRD = 0b11111110;
}

void loop() {
while(valor < 10){
velocidad1 = digitalRead(PULS1);
velocidad2 = digitalRead(PULS2);
velocidad3 = digitalRead(PULS3);
if(velocidad1 == 1){
cambio = 1;
}else if(velocidad2 == 1){
cambio = 2;
}else if(velocidad3 == 1){
cambio = 3;
}else if(velocidad1 == 1 && velocidad2 == 1 && velocidad3 == 1){
cambio = 4;
}else{
cambio = 0;
}switch(cambio){
case 1:
PORTD = Display[valor];
delay(1000);
valor++;
if(valor > 9){
valor = valor - 10;
}break;
case 2:
PORTD = Display[valor];
delay(2000);
valor++;
if(valor > 9){
valor = valor - 10;
}break;
case 3:
PORTD = Display[valor];
delay(3000);
valor++;
if(valor > 9){
valor = valor - 10;
}break;
case 4:
PORTD = Display[valor];
delay(10000);
break;
}
}
}

Hi @red0214. We have moved your topic to the forum’s Español category twice now. Please only post in the English language categories if you want to use English.

Thanks in advance for your cooperation.
Per

Hola, para que ese if sea comparado por el micro las 3 entradas deben de estar a 1, pero de la forma que encadenas los if- else cuando el pin 8 esta a 1 funciona el primer If, cambio se hace 1 y no se ejecutan ninguna de las siguientes comparaciones,
Saludos.