Estructuras básicas que debemos conocer
Antes de comenzar a programar, es importante que conozcamos una serie de estructuras que nos van a acompañar durante este curso.
Condicionales (if-else-else if)
Estas estructuras se encargan de controlar qué acciones de nuestro algoritmo van a ejecutarse y cuáles no. Solo hay dos opciones, o bien se cumplirán las condiciones, o no.
Las palabras clave de esta estructura son:
IF - ELSE
IF: A esta palabra le seguirá la condición que deberá cumplirse para ejecutar una serie de acciones.
ELSE: irá seguida de las acciones que se ejecutarán en caso de que la condición no se cumpla.
Un ejemplo para verlo en acción
No hay mejor manera para entender algo que ver una demostración de su uso. Para ello, vamos a recurrir a uno de los ejemplos que nos brinda la IDE de Arduino. Este ejemplo podemos encontrarlo dentro de:
Archivo > Ejemplos > 01. Basics > Fade
En este ejemplo, lo que hacemos es aumentar y disminuir la luminosidad de un LED de manera progresiva, en lugar de encenderlo o apagarlo del todo, como hacíamos en la práctica del bloque anterior.
Para ello, haremos uso de unos pines especiales, los cuáles pueden ser configurados para funcionar con modulación por ancho de pulsos. Y, ¿esto qué significa? pues que no solamente tienen dos posiciones (encendido o apagado), sino que podemos controlar cómo de apagado y encendido está controlando la cantidad de energía que recibe.
Regular esta cantidad de energía puede hacerse con la función analogWrite(). Ya habíamos visto la función digitalWrite(). Si no te acuerdas, puedes echarle un vistazo aquí. analogWrite() nos permite darle al pin elegido un valor de 0 a 255, siendo 0 totalmente apagado y 255 totalmente encendido. ¿Cuál es la particularidad de esta función? que, a diferencia de digitalWrite(), que puede ser configurada con cualquier pin, analogWrite() no.
Una lista de los pines que admiten PWM dependiendo del Arduino que estemos utilizando la encontramos aquí.
De este ejemplo, por el momento, vamos a ver concretamente la parte relacionada con el condicional, pero volveremos a él después para utilizarlo como ejemplo de uso de palabras reservadas y funciones. En este algoritmo, el condicional aparece en las siguientes líneas.
if (brightness <= 0 || brightness >= 255) {
fadeAmount = -fadeAmount;
}
En estas líneas encontramos la palabra reservada if seguida de dos condiciones encerradas entre paréntesis. Lo que traducido a español significaría: "Si el brillo es menor o igual que cero o el brillo es mayor o igual que 255". La disyunción nos viene dada por el operador lógico OR que para Arduino se traduce como ||. Otros operadores lógicos muy comunes son AND, que se traduce por && y NOT, que se escribe !.
Entre corchetes { } encontramos la acción a realizar. En este caso, revertir la cantidad de brillo que emitirá nuestro LED: si lo hemos apagado, lo comenzaremos a encender y al revés, si lo hemos encendido completamente, comenzaremos a apagarlo.
En este caso, no existe una acción que deba ejecutarse en caso de que no se de alguna de las dos circunstancias encerradas en el condicional, pero si la hubiese aparecería detrás de la palabra else.
Por tanto, un esquema de la estructura de los condicionales sería:
if (Condición) {
Acción A
} else {
Acción B
}
Siendo posible también:
if (Condición) {
Acción
}
Una última palabra sobre los condicionales: else if
Existe también la posibilidad de que tengamos que realizar selecciones que den lugar a más de dos posibilidades, como por ejemplo en el caso que estemos leyendo ciertos valores de un sensor y queramos que un actuador realice diferentes acciones dependiendo de ellos.
Si el sensor recibe valores entre 0 y 255 --> Acción A
Si el sensor recibe valores entre 256 y 511 --> Acción B
Si el sensor recibe valores entre 512 y 1024 --> Acción C
Para ello necesitaremos las palabras else if, las cuales indican una segunda condición, o sucesivas.
La estructura sería la siguiente:
if (Condición 1) {
Acción A
} else if (Condición 2) {
Acción B
} else{
Acción C
}
Iteraciones (for/while)
Palabras reservadas
Librerías
Puerto serie