En este momento estás viendo Programación de Arduino: Como usar los condicionales If y Switch

Programación de Arduino: Como usar los condicionales If y Switch

Cuando programamos una placa Arduino los bloques condicionales permiten evaluar condiciones en una variable, y ejecutar algunas instrucciones en caso de cumplirse o no la condición, los bloques condicionales son los if y los switch.

Bloques “if” y “if/else”

Un bloque if sirve para comprobar si una condición determinada es cierta (true) o falsa (false). Si la condición es cierta, se ejecutan una o varias instrucciones. El bloque if/else funciona igual que el if, pero adicionalmente ejecuta una o varias instrucciones cuando la condición no es cierta. La sintaxis para el bloque if es la siguiente:

if (condición) {
//Instrucciones que se ejecutan si la condición es cierta –true–
} 

Y la sintaxis para el bloque if/else será la siguiente:

if (condición) {
//Instrucciones que se ejecutan si la condición es cierta –true–
} else {
//Instrucciones que se ejecutan si la condición es falsa –false–
}

El else es opcional, puedes colocarlo o no según lo necesite tu programa. También se puede dar el caso que necesitamos evaluar varias condiciones a la vez, los bloques if se pueden entonces anidar usando la expresión else if, y usando la siguiente sintaxis:

if (condición) {
//Instrucciones que se ejecutan si la condición es cierta
} else if (otra_condición) {
//Instrucciones que se ejecutan si la condición del anterior “if” es falsa pero la actual es cierta 
} else if (otra_condición) {
//Instrucciones que se ejecutan si la condición del anterior “if” es falsa pero la actual es cierta 
} else {
//Instrucciónes que se ejecutan si todas las condiciones anteriores eran falsas
}

No existe límite para la cantidad de condiciones que podemos evaluar, ni para el tipo de variable que podemos evaluar, pueden ser números enteros o decimales.

Por otro lado, es bastante probable encontrar en algunos programas expresiones tales como if(mivariable) en vez de if(mivariable!=0), por ejemplo. Es decir, “ifs” que solo incluyen una variable, pero no la condición para evaluarla. Esta forma de escribir los “ifs” es simplemente un atajo: si en el if solo aparece una variable o expresión sin ningún tipo de comparación, es equivalente a comprobar si dicha variable o expresión es “true” (es decir, si es diferente de 0).

Ejemplo de uso de if

float temperatura=100;   //Declaro una variable con un valor de 100 
boolean alarma=0;      //Declaro una variable con un valor de 0 
int velocidadBomba=50; //Declara una variable 

void setup() {
 Serial.begin(9600);  //Inicio la comunicación serial
 }

void loop() {
 if (Serial.available()>0){             //Consulta si hay datos en buffer de entrada serie
    temperatura=Serial.parseFloat();      //Lee un numero decimal en el buffer serial y lo guarda en temperatura
    Serial.print("La temperatura es "); //Imprime el texto en el monitor serie
    Serial.println(temperatura);        //Imprime el valor de la variable
    if(temperatura<80) Serial.println("Temperatura normal"); //Si la temperatura es normal imprime un mensaje
    if(temperatura>80&&temperatura<100) {  //Si la temperatura sube mas de 80 imprime otro mensaje
      velocidadBomba=85;                   //Ajusta la velocidad de la bomba
      Serial.println("Alerta de temperatura");
      }
   if(temperatura>=100){                //Si la temperatura es mayor que 100 imprime un mensaje
     alarma=1; //activa una alarma      //Activa la alarma
     Serial.println("Temperatura Alta");//Imprime un mensaje de aviso
     velocidadBomba=100;                //Ajusta la velocidad de la bomba
   }else {
     alarma=0;                          //Desactiva la alarma cuando la temperatura baja de 100
     }
   }
}

Bloques “switch”

Una manera válida de hacer comprobaciones de condiciones múltiples, más elegante, cómoda y fácil es utilizar el bloque switch. Su sintaxis es la siguiente:

switch (expresión) {
case valor1:
//Instrucciones que se ejecutarán cuando “expresión” sea igual a “valor1”
break;
case valor2:
//Instrucciones que se ejecutarán cuando “expresión” sea igual a “valor2”
break;
//Puede haber los “case” que se deseen, y al final una sección “default” (opcional)//
default:
//Instrucciones que se ejecutan si no se ha ejecutado ningún “case” anterior
}

La única limitación que tiene el switch es que solo se pueden evaluar números enteros, y solo se evalúan las condiciones hasta que una sea cierta.

Ejemplo de uso de un switch

int x; //Declara una variable sin un valor inicial
void setup(){
Serial.begin(9600); //inicia la comunicación serial
}
void loop() {
if (Serial.available()>0){  //Consulta si hay datos en buffer de entrada serial
  x=Serial.parseInt();  //Lee un numero entero en el buffer serial y lo guarda en x
  switch (x) {  //consulto el valor de la variable x
  case 20:
  Serial.println("x vale 20 exactamente");  //Imprime un mensaje si el valor de x es 20
  break;
  case 50:
  Serial.println("x vale 50 exactamente");  //Imprime un mensaje si el valor de x es 50
  break;
  default:
  Serial.println("x no vale ni 20 ni 50");  //Imprime un mensaje si no se cumplen las condiciones anteriores
             }
  }
}

 Operadores lógicos

Además de los operadores de comparación, en las comparaciones también se pueden utilizar los operadores booleanos (también llamados lógicos), usados para encadenar dos o más comprobaciones dentro de una condición. Estos son los siguientes:

&&Comprueba que dos condiciones sean ciertas(Operador AND)
||Comprueba que, al menos, una de dos condiciones sea cierta(Operador OR)
!Comprueba que no se cumpla la condición a la que precede(Operador NOT)

Ejercicios

Ejercicio 1: Evaluar el valor de una variable

Realizar un programa que me indique si el valor de una variable es mayor a 10. Para ello vamos a declarar una variable y le daremos un valor cualquiera (por ejemplo 20), luego compararemos el valor de la variable con 10 para saber si esta es mayor, si es mayor se imprimirá en el monitor serie un mensaje indicándolo, y si no lo es también nos lo dirá con un mensaje.

Ejercicio 2: Verificar un número

Usando el monitor serie evaluar si el numero entero introducido es igual, menor o mayor a 22. Se debe recibir un mensaje de respuesta en el monitor serial para cada caso.

Ejercicio 3: Uso de switch

Usando la función switch, verificar usando el monitor serial si el número introducido es igual a 17, 22 o 25, indicándolo mediante un mensaje.

Ejercicio 4: Comparaciones

Usando dos variables, una llamada presión y otra temperatura, hacer un programa que evalúe si la presión es menor a 7.5 y la temperatura mayor a 80, en ese caso mandar una alerta por el monitor serial. Adicionalmente si la presión baja de 3.1 enviar una alarma también por el monitor serial.

Esta entrada tiene 2 comentarios

  1. Franco Rodrigo Diaz

    En el caso que quiera realizar una acción que dependa de un intervalo de valores como sería la sintaxis del case?
    Por ejemplo:
    Quiero realizar un código en el que se ponga en alto la salida de un pin digital dependiendo de un valor ingresado en una entrada analógica (A0). No se sabe con exactitud que valor es el que se está leyendo, pero si se sabe que está entre 750 y 900

    1. Fidias Rodriguez

      Hola Franco, Gracias por el comentario, te sugiero usar la función if para evaluar un rango de valores. Saludos.

Deja una respuesta