En esta lección aprenderás a codificar un programa cuando se requiere hacer la ejecución de ciertas sentencias o instrucciones que dependen de una selección de entre varias opciones o alternativas a seguir con el uso de la estructura switch (En caso que o según sea).
Estructura de selección múltiple
En la práctica, cuando construimos un programa, es necesario que existan más de dos elecciones. Cuando el número de alternativas es grande, existe una estructura que evalúa una expresión que puede tomar n valores distintos. Según coincida la expresión con uno de los valores de la condición, se ejecuta una de las n acciones. Estamos hablando de la estructura selectiva múltiple switch – case.
Switch
La estructura switch…case evalúa una expresión de una lista de posibles coincidencias, cuando encuentra una correspondencia se ejecuta un bloque de instrucciones.
El diagrama de flujo de la sentencia switch..case es la que se muestra en la figura 1.

Como puedes ver en la figura 1, se compara la condición con cada uno de las opciones existentes. Cuando se encuentra una opción cuyo valor coincide con el de la condición, se ejecutan las instrucciones de esa opción. Veamos ahora la sintaxis de la sentencia switch:
Sintaxis
switch (valor) {
case opcion1:
// instrucción1
break;
case opción2:
// instrucción2;
break;
default:
// instrucción3
break;
}
Parámetros
valor – variable cuyo valor se compara con varios casos, generalmente de tipo caracter (char) o numérico entero (int).
opción – Cada una de los posibles valores.
instrucción – La acción o conjunto de acciones que se van a realizar.
Vamos a ver el uso de la sentencia switch con el siguiente ejemplo:
Se desea programar un circuito electrónico que lee un caracter desde el teclado utilizando el monitor serial, y de acuerdo al caracter leído enciende uno de los tres colores de un led RGB.
El led RGB se conectará a los pines PWM 9, 10 y 11 (Figura 2)

En este caso, se configura el pin 9, 10 y 11 como salida (OUTPUT), posteriormente, utilizamos el monitor serial para leer un valor desde el teclado. Vamos a revisar las funciones que realizan estas acciones.
Función Serial.available
Serial.available(): Devuelve un valor si hay algún carácter leído desde el monitor serial
Sintaxis
Serial.available( )
Ejemplo de uso
La mejor forma de utilizar la función Serial.available () es mediante una comparación que permita valorar que existe un caracter leído desde teclado con la sentencia if
if (Serial.available() > 0){//Si existe un caracter leído desde teclado es mayor que 0
// Escribe tu código aquí
}
Función Serial.read
Serial.read(): Recoge un carácter leído
Sintaxis
Serial.read( )
Ejemplo
Para utilizar la función Serial.read () lo mejor es asignar el valor que obtiene por el monitor serial y asignarla una variable de tipo caracter (char) o número entero (int)
char dato;
dato=Serial.read () ; // lee un caracter y lo asigna a la variable dato
Ahora que ya leimos el valor desde teclado con el uso del monitor serial, utilizamos el valor de la variable para codificar la sentencia switch:
switch (dato) { // variable que se va a comparar con las opciones del switch
// sentencias case
}
Para comparar el valor de la variable dato, la sentencia switch compara el valor de la variable dato con los valores especificados en las instrucciones case. Cada case contiene sus instrucciones a realizar y se termina cada declaración case con la palabra clave break, que indica el final de las instrucciones. Cada declaración case se codifica como lo muestra la siguiente tabla: (Figura 3):

¿Qué pasa si el valor de la variable dato no coincide con ninguna opción? Para este caso podemos utilizar la sentencia default, que ejecutará en caso de no cumplirse ninguno de los casos.
Manos a la obra

Para comprender mejor el uso de la sentencia de selección múltiple switch case, vamos a realizar la práctica que enciende el color de un led PWD dependiendo de un valor leído desde el teclado por el monitor serial.
Materiales








Si deseas repasar las características técnicas y funcionamiento de alguno de los componentes electrónicos, puedes dar clic sobre su imagen para consultar su información.
Construcción del circuito electrónico
Realiza las conexiones del circuito electrónico que se muestra en el diagrama esquemático de la Figura 4. Recuerda que la terminal del color rojo, azul y verde va conectado a una resistencia y el cátodo a la tierra.

Programación del circuito electrónico
Captura el código del programa en el IDE de Arduino. Procura realizarlo tú mismo para aprender la forma de codificar la sentencia switch case.
/* Manual de programación con Arduino
* Práctica: Aplicación de sentencia switch - case
* Objetivo: Encender un color de un led RGB de acuerdo a un caracter
* Fecha: noviembre 2020
* Autor: Milagros Pacheco Castañeda
*/
char dato;
void setup() {
pinMode(11, OUTPUT); //configura el pin pwm 11 de salida (color rojo del led)
pinMode(10, OUTPUT); //configura el pin pwm 10 de salida (color verde del led)
pinMode(9, OUTPUT); //configura el pin pwm 9 de salida (color azul del led)
Serial.begin(9600);
}
void loop() {
// activa el monitor serie para lectura
if (Serial.available()>0) { //obtiene el caracter dede el monitor serial
dato = Serial.read(); //
switch (dato){ // evalúa el valor de caracter
case '1': // en caso que sea '1'
digitalWrite(9, HIGH);
Serial.println ("Color verde encendido");
break;
case '2': // en caso que sea '2'
digitalWrite(10, HIGH);
Serial.println ("Color azul encendido");
break;
case '3': // en caso que sea '3'
digitalWrite(11, HIGH);
Serial.println ("Color rojo encendido");
break;
default: // cualquier otro valor
Serial.println ("Rojo, azul y verde encendidos");
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
break;
} // fin switch
delay(1500);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
} // fin if
}
Funcionamiento del circuito electrónico
Prueba el funcionamiento de tu circuito electrónico. Verifica que el circuito funcione como la simulación que se muestra a continuación. Presiona el botón Código y da un clic en el símbolo monitor en serie para abrir la pantalla. Presiona el botón Iniciar simulación, comprueba el programa escribiendo valores en la pantalla del monitor en serie y observa el funcionamiento del programa
Si en tu navegador no se muestra la simulación, ingresa al enlace https://www.tinkercad.com/embed/94EYzyH0rOI

Autoevaluación

Para aprender más
DIWO (2016) Máquinas de estado. Switch case. http://diwo.bq.com/maquinas-de-estado-switch-case/
´