Introduction: C/C++ En Arduino: Condicionales If... Else

About: Músico, matemático, computación, ciencia... insolente y subversivo, pero siempre propositivo

Con el Arduino muchas veces lo que queremos es medir algo con un sensor, y luego actuar de alguna manera, encendiendo una luz o moviendo un motor dependiendo de los valores medidos. Para hacer esto se necesita lo que se llama condicionales. Una condicional evalúa una situación, y dependiendo si esta es verdadera o falsa, entonces ejecuta una u otra acción.

En este instructable hacemos un ejemplo sencillo con un botón y el Led 13 del Arduino. Antes de eso, hablamos de operadores relacionales para poder entender mejor como usar el if, else del lenguaje C.

Un condicional se escribe:

if(condicion){
	ejecuta esto
} else {
	ejecuta esto otro
}

Donde condición es una expresión que retorna verdadero (true) o falso (false), como se explica en el siguiente psao. Si la condición es verdadera entonces "ejecuta esto", si por el contrario, la condición es falsa, entonces ejecutaría "ejecuta esto otro"

Step 1: Operadores Relacionales

Un operador relacional, establece la relación entre dos operandos. Así por ejemplo el operador ">" (mayor que), al usarlo con los operandos 1 y 2 en la expresión:

 1 > 2

Establece una relación entre los dos valores. En este caso la expresión tiene como resultado "false". Estos valoes se pueden almacenar en tipos de variable que se llaman boolean, por ejemplo si quiero almacenar lo anterior en una variable entonces:

boolean r  = 1 > 2;

La expresión anterior evalúa la expresión y el resultado "false" lo almacena en la variable r.

Básicamente los operadores relacionales comparan entre dos operandos o valores. Los operadores relacionales en C son 6:

  1. == (igual)
  2. != (no es igual)
  3. < (menor que)
  4. > (mayor que)
  5. <= (menor o igual a)
  6. >= (mayor o igual a)

Adicionalmente estas expresiones se pueden combinar con operadores booleanos, es decir operadores que trabajan con true o false:

  1. && (and)
  2. || (or)
  3. ! (not)

En la foto se ven las tablas de verdad, es decir las combinaciones de valores true y false y su resultado con operadores booleanos.

Ahora si, vamos al código

Step 2: Materiales

Ocupamos

  1. Arduino UNO
  2. Botón
  3. Cables

Step 3: Conexiones

Las conexiones son sencillas. Como se muestra en la foto, ubicar el botón en el breadboard, de tal forma que quede en el centro, con unas patas de un lado y las otras del otro del breadboard. Luego conectar una para a "GND" y la otra al pin 2, como se muestra en la foto.

Step 4: Código

El código es muy sencillo. Querémos prender y apagar el led 13 del Arduino con un botón. Al dejar presionado el botón, la luz encendida, y al soltarlo, la luz apagada.

Veamos el código. Las líneas 5 y 6 simplemente definene el modo de los pines 2 y 13:

pinMode(2, INPUT_PULLUP);<br>pinMode(13,OUTPUT);

En el pin 2, usamos un INPUT_PULLUP, que se explica acá. El pin13 simplemente como OUTPU, para encender led que viene en la placa de Arduino.

En la línea 10 se lee la información del pin 2, y se almacena en una variable que llamamos state:

int state = digitalRead(2);

Luego, aplicamos las condicionales. En la línea 11 a la 15 se aplica la condicional if, else:

if (state == 0) {<br>	digitalWrite(13, HIGH);
} else {
	digitalWrite(13,LOW);
}  

Al leer el pin 2, y al estar apretado, la lectura será igual a 0 (por el pullup). En la primera línea del condicional, compara la lectura con 0, state == 0, en caso de que el botón no esté apretado, la lectura será 0, y por tanto esa expresión es verdadera, entonces entra a esa arte del código y ejecuta la línea digitalWrite(13, HIGH), es decir enciende el led. Si el valor del botón fuera 1, es decir, cuando está apretado, entonces la expresión state == 0, es falsa, y por tanto entonces leería la línea digitalWrite(13,LOW), y por tanto apaga el led.

Step 5: Funcionando

Cragar y listo.

Para que vean la diferencia de los operadores relacionales, por ejemplo cambien el "==" (equal) por un "!=" (not equal)