Comando switch en la librería arduino

09/07/2019

El comando switch es una herramienta fundamental en programación Arduino que permite controlar el flujo de ejecución de un programa basándose en diferentes opciones o casos. A diferencia de las estructuras if-else if-else, que se vuelven engorrosas con muchas condiciones, el switchofrece una forma más limpia y eficiente de manejar la selección múltiple.

Temario

¿Qué es el comando switch en Arduino?

La estructura switch-caseen Arduino evalúa una expresión y, dependiendo de su valor, ejecuta un bloque de código específico. Es ideal cuando se necesita realizar acciones diferentes según el valor de una variable, generalmente de tipo entero ( int) o carácter ( char). Esto simplifica la lectura y el mantenimiento del código, especialmente en programas con varias alternativas.

Estructura del comando switch

La sintaxis del switchen Arduino es la siguiente:

switch (variable) {
case valor1:
// Código a ejecutar si variable == valor1
break;
case valor2:
// Código a ejecutar si variable == valor2
break;
case valorN:
// Código a ejecutar si variable == valorN
break;
default:
// Código a ejecutar si variable no coincide con ningún case
break;
}

Donde:

  • variable: Es la expresión que se evalúa. Su valor determina qué bloque de código se ejecutará.
  • case valorX: Cada case representa un posible valor de la variable. Si el valor de la variable coincide con un case , se ejecuta el código asociado a ese case .
  • break: La palabra clave break es crucial. Indica el final de un case y evita que la ejecución continúe con los siguientes cases . Si se omite el break , el código continuará ejecutándose hasta encontrar un break o el final del switch ( fallthrough ).
  • default: El case default es opcional. Se ejecuta si el valor de la variable no coincide con ninguno de los cases definidos.

Ejemplo práctico: Control de un LED RGB

Imaginemos un circuito con un LED RGB conectado a un Arduino. Queremos controlar el color del LED según un valor leído desde el puerto serie. Utilizaremos el switchpara simplificar el código:

comando switch en libreria arduino - Cómo conectar un switch a un Arduino

int rojoPin = 11;
int verdePin = 10;
int azulPin = 9;

void setup() {
Serial.begin(9600);
pinMode(rojoPin, OUTPUT);
pinMode(verdePin, OUTPUT);
pinMode(azulPin, OUTPUT);
}

void loop() {
if (Serial.available() > 0) {
int dato = Serial.read() - '0'; // Convertir caracter a entero
switch (dato) {
case 1:
digitalWrite(rojoPin, HIGH);
Serial.println("Rojo encendido");
break;
case 2:
digitalWrite(verdePin, HIGH);
Serial.println("Verde encendido");
break;
case 3:
digitalWrite(azulPin, HIGH);
Serial.println("Azul encendido");
break;
default:
Serial.println("Color inválido");
break;
}
delay(1000);
digitalWrite(rojoPin, LOW);
digitalWrite(verdePin, LOW);
digitalWrite(azulPin, LOW);
}
}

Este código lee un número del puerto serie (1, 2 o 3) y enciende el LED rojo, verde o azul respectivamente. El case defaultmaneja entradas inválidas.

Funciones útiles con el comando switch

Para optimizar el uso del switch, se pueden combinar con otras funciones de Arduino:

  • Serial.available(): Verifica si hay datos disponibles en el puerto serie.
  • Serial.read(): Lee un dato del puerto serie.
  • digitalRead(): Lee el estado de un pin digital (HIGH o LOW).
  • analogRead(): Lee el valor analógico de un pin.

Tabla comparativa: if-else vs. switch

Característica if-else switch
Legibilidad Puede ser difícil de leer con muchas condiciones Más legible para muchas opciones
Eficiencia Puede ser menos eficiente con muchas condiciones Generalmente más eficiente
Mantenimiento Más difícil de mantener con muchas condiciones Más fácil de mantener
Flexibilidad Mayor flexibilidad en las condiciones Menos flexible, solo valores constantes

Consideraciones importantes

Recuerda que:

  • Los valores en los cases deben ser constantes y del mismo tipo que la variable en la expresión switch .
  • Si se omite el break , la ejecución continúa con el siguiente case ( fallthrough ).
  • El case default es útil para manejar entradas inesperadas.
  • Para valores que no son enteros o caracteres, se pueden usar conversiones o funciones auxiliares para adaptarlos a la estructura switch .

Consultas habituales sobre el comando switch en Arduino

Algunas consultas habituales sobre el switchen Arduino son:

  • ¿Puedo usar variables en los cases? No, los cases requieren valores constantes.
  • ¿Qué pasa si no hay un case que coincida? Se ejecuta el case default (si existe), o no se ejecuta ninguna acción.
  • ¿Puedo anidar switch? Sí, es posible anidar estructuras switch dentro de otras.
  • ¿Cómo manejar rangos de valores en un switch? Se puede usar una serie de cases consecutivos o usar if-else dentro del switch para manejar rangos.

El comando switch es una herramienta poderosa y eficiente para manejar la selección múltiple en programas Arduino, ofreciendo una mejora en la legibilidad y el mantenimiento del código. Su correcta implementación puede simplificar considerablemente la lógica de tus proyectos.

Si quieres conocer otros artículos parecidos a Comando switch en la librería arduino puedes visitar la categoría Libros y Librerías.

Subir