Sentencia switch

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. 

Figura1. Diagrama de flujo de la sentencia switch – case

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)  

Figura 3.  Conexión de un LED PWM al pin 9, 10 y 11 de la tarjeta Arduino UNO

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

Armando Circuitos

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.

Figura 4 Diagrama esquemático del circuito electrónico para encender un color del led RGB

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

logo-autoevaluación
Armando Circuitos

Autoevaluación

para aprender más

Para aprender más

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

´