Diferencia entre revisiones de «switch... case»

De ArduWiki
Saltar a: navegación, buscar
(Ejemplo 3)
(Ejemplo 3)
Línea 79: Línea 79:
  
 
void loop() {
 
void loop() {
   if {
+
  //Esperamos una tecla
 +
   if Serial.available(){
 
       char tecla = Serial.read();
 
       char tecla = Serial.read();
 
       switch (tecla){
 
       switch (tecla){

Revisión del 23:04 15 feb 2019

Descripción

Es un condicional múltiple permitiendo evaluar una sola variable y que se ejecute uno o mas trozos de código, comparando la variable con cada uno de los valores especificados en las instrucciones case. Cuando se encuentra una sentencia case cuyo valor coincide con el de la variable, el código bajo 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 break, 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.

La palabra reservada default se usa para ejecutar código cuando el valor ingresado no coincide con ninguno de los case. Si esto último llega a suceder pero no hay sección default, la sentencia switch simplemente se ignorará y flujo de código seguirá como si no estuviera ahí.

Sintaxis

switch (var) { 
case label1:
   // instrucciones 
   break; 
case label2: 
   // instrucciones 
   break; 
default: 
   // instrucciones 
   break; 
} 

Parámetros

var
Variable a evaluar
labeln
Valor posible de la variable
default
Es el grupo de instrucciones a ejecutar solo si ninguna label se alcanzo.

Advertencias

No debes olvidar el break o todas las sentencias serán ejecutas.

Ejemplo 1

En este ejemplo evaluamos la variable var que obtuvo un dato de un pin analógico.

int var = analogRead(A0);
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: //Opcional
  //si nada coincide, hace lo predeterminado 
}

Ejemplo 2

En este ejemplo evaluamos la variable var que obtuvo un dato de un pin analógico.

int var = analogRead(A0);
switch (var){ 
case 1:
case 2:
case 3:
  //hace algo cuando var es igual a 1, 2 o 3.
  break 
case 4: 
case 5: 
case 6: 
  //hace algo cuando var es igual a 4, 5 o 6.
  break; 
default: //Opcional
  //si nada coincide, hace lo predeterminado 
}

Al no poner break luego de algunos case se logra que cualquiera de esos valores ejecute el mismo codigo.

Ejemplo 3

En este ejemplo ponemos un LED RGB (rojo, verde y azul) en los pines digitales 2, 3 y 4. Luego desde el teclado si pulsamos R se prende el LED rojo y lo volvemos a pulsar se apaga. Similar con verde y azul.


void setup() {
   Serial.begin(9600);
   pinMode(2, OUTPUT);  //Rojo
   pinMode(3, OUTPUT);  //Verde
   pinMode(4, OUTPUT);  //AZUL
}

void loop() {
   //Esperamos una tecla
   if Serial.available(){
      char tecla = Serial.read();
      switch (tecla){
      case 'R':
         digitalWrite(2, !digitalRead(2));
         break;
      case 'G':
         digitalWrite(3, !digitalRead(3));
         break;
      case 'B':
         digitalWrite(4, !digitalRead(4));
         break;
      }
   }
}

Vea también

Referencias