Al igual que las instrucciones if, switch
... case controla el flujo del programa permitiendo que los programas especifiquen un código diferente
que debe ser ejecutado en distintas condiciones. En particular, una
sentencia switch compara el valor de una variable con los valores
especificados en las instrucciones case. Cuando se encuentra una sentencia
case cuyo valor coincide con el de la variable, el código de esa declaración
case se ejecuta.
La palabra reservada break interrumpe la sentencia switch, y se usa
normalmente al final de cada declaración case. Sin una declaración de
interrupción, la sentencia switch continuará la ejecución de las siguientes
expresiones hasta que se alcanza una interrupción o hasta el final de la
sentencia switch.
Ejemplo
switch (var){
case 1
//hace algo cuando var es igual a 1
break
case 2
//hace algo cuando var es igual a 2
break
default:
//si nada coincide, hace lo predeterminado
// default es optional
break
}
Sintaxis
{
case label
// instrucciones
break;
case label:
// instrucciones
break;
default:
// instrucciones
break;
}
Parametros
var: la variable cuyo valor es comparado en los distintos case.
Hola.
ResponderEliminarQuiero hacer una comparativa y usar el swith-case para ello, pero me da error al compilar. ¿Se puede poner una expresión en vez de un valor de variable, >90, <10?. Por ejemplo, para poner un texto en el LCD y el número alineado al borde derecho:
switch (Velocidad)
{
case > 99:
lcd.print("Velocidad "); // muestra mesaje en primera fila
break;
case < 10:
lcd.print("Velocidad "); // muestra mesaje en primera fila
break;
default:
lcd.print("Velocidad "); // muestra mesaje en primera fila
break;
}
Gracias
mb162900@gmail.com
int Velocidad;
Eliminarswitch (Velocidad)
{
case Velocidad > 99:
lcd.print("Velocidad "); // muestra mesaje en primera fila
break;
case Velocidad < 10:
lcd.print("Velocidad "); // muestra mesaje en primera fila
break;
default:
lcd.print("Velocidad "); // muestra mesaje en primera fila
break;
}
En el comentario anterior, al publicar, se han perdido la diferencia de espacios en las cadenas y solo muestra "Velocidad "
ResponderEliminarHola, he visto en otros compiladores que un case puede ser dos variables usando && o ||, funciona por ejemplo si quieres que entre en ese caso si se cumple un u otro valor. saben como se puede hacer en arduino?
ResponderEliminarhttp://www.arduino.utfsm.cl/referencia/if-y-comparadores/ en esta pagina esta lo que buscas bien explicado...
Eliminarbuen día. estoy haciendo un programa de control de banda con arduino. los motores deben girar en un sentido y luego dependiendo de las condiciones de entrada giraran hacia el otro.
ResponderEliminarEl punto es que los motores giran hacia un lado y luego cuando cambian las condiciones,no puedo salir del else final...pueden ayudarme? gracias..
adjunto la sección de código
} // llave de while
} // LA LLAVE QUE CIERRA digital read
else{ // seria para apagar los motores
analogWrite(3,0);
digitalWrite(0, HIGH);
digitalWrite(4, LOW);
lcd.setCursor(0,1);
lcd.print("motors off");
delay(1000);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("me quedo");
delay(1000);
}
como puedo hacer un programa de arduino que al pulsar 3 veces el switch que en 5 segundos prende el led y se apague en 5 segundos????
ResponderEliminarCUANTOS SELECT CASE PUEDO HACER NECESITO HACER UN DICCIONARIO DE 250 A 500 PALABRAS ALGUIEN PODRIA DECIRME, YA QUE LLEGO AL CASE NUMERO 9, Y DEL 10 EN ADELANTE NO FUNCIONA, SALUDOS....
ResponderEliminarbuena noche si por favor me pueden colaborar con el código tengo el arduino nano o uno y una micro sd quiero que se reproduzca un determinado sonido dependiendo de la entrada que este en alto por ejemplo
ResponderEliminarsonido A con pin 3
sonido B con pin 4
sonido C con pin 5
muchas gracias
Gracias por su trabajo. Exposicion concisa y calara.
ResponderEliminarSolo le sugeriria que la lista de la derecha estubiese ordenada alfabeticamente, seria aún de mas ayuda.
GRACIAS.
hola a todos no creo que reciba respuesta ahora pero puede ayudar a alguien en el futuro, como puedo hacer el codigo para que el servo gire en un angulo determinado al escribir una letra especifica en la consola?
ResponderEliminarvoid loop()
ResponderEliminar{
if (Serial.available()>0)
{
char option = Serial.read();
if (option >= '1' && option <= '9')
{
option -='0';
switch (option)
{
case 1:
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
analogWrite(ENA, 64); //CONTROLAMOS LA VELOCIDAD
delay(500);
break;
case 2:
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
analogWrite(ENA, 128);
delay(500);
break;
case 3:
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
analogWrite(ENA, 192);
delay(500);
break;
case 4:
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
analogWrite(ENA, 255);
delay(500);
break;
case 5:
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
analogWrite(ENA, 64);
delay(500);
break;
case 6:
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
analogWrite(ENA, 128);
delay(500);
break;
case 7:
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
analogWrite(ENA, 192);
delay(500);
break;
case 8:
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
analogWrite(ENA, 255);
delay(500);
break;
case 9:
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
analogWrite(ENA, 0);
delay(500);
break;
}
}
}
}
Buenas tardes quisiera saber que codigo poner para que un motor paso a paso haga giros en sentido horario y antihorario
ResponderEliminaren arduino uno
Eliminar