Documentos de Académico
Documentos de Profesional
Documentos de Cultura
de tu código
Luis del Valle Hernández
Las sentencias condicionales if con Arduino son las más utilizadas
en programación de proyectos Maker. Sirven para que tu programa
haga una cosa u otra dependiendo de cada situación.
La condición es la que hará que se ejecute el código que hay entre las
llaves. Si es verdadera, el flujo del código de Arduino entrará dentro de
las llaves y ejecutará todo lo que hay dentro. Pero claro ¿qué es una
condición?
Operadores de comparación en
sentencias if con Arduino
Realmente, para que algo sea verdadero o falso necesitamos
compararlo con algo. Lo típico es utilizar la sentencia condicional if con
Arduino con números pero se pueden utilizar otro tipo de datos.
Los 4 primeros (mayor que, menor que, mayor o igual que o menor o
igual que) son bastante explícitos. Sin embargo, los dos últimos (igual
a y diferente a) requieren de una pequeña explicación.
4 void setup() {
6 Serial.begin(9600);
7 }
8
9 void loop() {
12
14 Serial.println(valor);
15
19 Serial.println("Valor superado");
20 }
22 delay(100);
23 }
El código comienza declarando una variable constante del
tipo byte que se llama pinAnalogico. Esta variable contiene el pin
anlógico donde tenemos conectado el potenciómetro.
|| or (0)
&& and (y)
! not (no)
Este operador hace que la condición del if con Arduino sea cierta
si se cumple alguna de las dos o varias condiciones. Por ejemplo,
si tenemos este código
Estamos diciendo que siempre que el valor sea mayor que 300 o que
el valor sea menor que 200, muestre un texto por el monitor serie.
Esto quiere decir que siempre que el valor esté entre 201 y 299 no
mostrará ningún texto.
Este operador hace que la condición del if con Arduino sea cierta
sólo si se cumplen las dos o varias condiciones. Por ejemplo, si
tenemos el código
Quiere decir que sólo será cierta si el valor es mayor que 300 y el
valor es menor de 500. Esto nos da un rango de valores de entre 301
y 499 (no olvides que los símbolos > y < excluyen a los números a la
derecha).
Por ejemplo, nos puede servir para saber si un botón no está pulsado.
En su uso normal, cuando esté pulsado tendrá un estado HIGH que,
como hemos visto, es verdadero. Mientras que cuando no está
pulsado tiene un estado de LOW, falso.
También hay que destacar el uso del operador not (!) con otros
operadores de comparación. Por ejemplo, una misma expresión se
puede expresar de diferentes maneras gracias al operador not. Si
quieres saber si un número está entre 300 y 500 puedes utilizar estas
dos condiciones:
Con lo que sabemos hasta ahora, podríamos hacer dos if con Arduino.
No estaría mal pero hay una forma más óptima de hacerlo, utilizando
la sentencia condicional else con Arduino.
Mucho ojo con este tipo de estructuras ya que nos pueden llevar a lo
que se conoce como código espagueti. Se trata de un código tan
ofuscado que parece un plato de espagueti.
6 void setup() {
8 Serial.begin(9600);
9
11 pinMode(pinLed, OUTPUT);
12 }
13
14 void loop() {
17
19 Serial.println(valor);
20
24 digitalWrite(pinLed, HIGH);
25 }else{
27 digitalWrite(pinLed, LOW);
28 }
29
31 delay(100);
32 }
La primera parte del código es la declaración de variables.
Necesitamos dos para almacenar el número de los pines. Son
constantes del tipo byte.
Pero existe la sentencia else if que, como ocurre con la sentencia else,
siempre va unida a un if con Arduino. Se podría traducir como si no ha
cumplido lo anterior, comprueba si se cumple esta otra.
Vuelvo a repetir que cuando se anidan varios if, si uno de ellos cumple
con la condición el resto de if no se ejecutarán. Esto hará que nuestro
código se más eficiente.
4 digitalWrite(pinLed, HIGH);
5 delay(500);
6 digitalWrite(pinLed, LOW);
9 digitalWrite(pinLed, HIGH);
10 }else{
12 digitalWrite(pinLed, LOW);
13 }
El código completo quedaría de la siguiente manera.
5
6 void setup() {
8 Serial.begin(9600);
9
11 pinMode(pinLed, OUTPUT);
12 }
13
14 void loop() {
17
19 Serial.println(valor);
20
24 digitalWrite(pinLed, HIGH);
25 delay(500);
26 digitalWrite(pinLed, LOW);
29 digitalWrite(pinLed, HIGH);
30 }else{
32 digitalWrite(pinLed, LOW);
33 }
34
36 delay(100);
37 }
Prueba a cargarlo y a jugar con el potenciómetro. Verás como pasa de
estar apagado a encendido y por último a parpadear.