Skip to main content

Estructuras y elementos básicos 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.

Comentarios...

...en Arduino

Vamos a echarle un vistazo a la siguiente imagen:

image-1663586136115.15.23.png

Esto es lo primero que veremos cuando tengamos instalado Arduino. Por defecto, al abrir la aplicación aparecen ciertas palabras escritas. En azul y verde vemos void setup() y void loop().De ambas nos ocuparemos en el siguiente apartado sobre funciones.

Ahora, lo que nos interesa son las líneas que aparecen // entre los corchetes de ambas funciones. Tras ellas, le indican al programador que puede sustituirlas por el código que será necesario ejecutar una vez, en el caso de void setup(), y por el código que tendrá que ejecutarse continuamente en el caso del void loop(). ¿Qué es importante aquí? Que esas indicaciones no van destinadas a nuestro ordenador, sino al programador. Se trata de comentarios.

Cuando nuestros comentarios solamente ocupen una línea los escribiremos tras //. Como puedes comprobar, su color es gris claro, eso nos indica que Arduino hará caso omiso de ellos. Habrá momentos en los que necesitemos escribir comentarios más extensos y para ellos los escribiremos entre  /**/.

Ejemplo: /*Esto es un comentario
que ocupa más de una línea. */

...en Pure Data

 

Funciones...

... en Arduino

Como hemos visto en el apartado anterior, a parte de los comentarios había unas palabras a color: void setup() y void loop()

Bueno, la estructura sería esta.

void setup() {
// aquí escribimos los comandos a ejecutar
}

Es muy importante que no olvidemos ningún paréntesis ni corchete, o el programa no funcionará.

Ambas son funciones. Y, ¿qué es una función dentro del mundo de Arduino? Una función es un fragmento de código, un subalgoritmo dentro de nuestro algoritmo, que tiene como propósito resolver una tarea determinada.
La palabra void, significa que esta función no nos devuelve ningún valor (sea un número, un caracter, un string, etc.) y la palabra reservada setup indica que el código que escribamos entre las llaves {} se ejecutará una sola vez al inicio del programa. Tanto setup como loop son palabras reservadas, pero eso lo veremos un poco más abajo.

En Arduino existen muchas funciones ya programadas, pero a parte de eso, podemos programar nuestras propias funciones.

Tienes una lista completa con las funciones que podemos encontrar en Arduino, aquí.

 

... en Pure Data

 

 

 

 

Variables

... en Arduino

No podemos avanzar mucho más sin hablar de ellas, las variables. Ellas nos van a permitir almacenar valores

 

... en Pure Data

 

Condicionales (if-else-else if)...

...en Arduino

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 (Integrated Development Environment, el lugar en el que vamos a escribir nuestros programas) de Arduino. Este ejemplo podemos encontrarlo dentro de:

Archivo > Ejemplos > 01. Basics > Fade

Aunque, como de momento no hemos instalado Arduino en nuestro ordenador, simplemente échale un vistazo al código de la siguiente imagen:

image-1663585519129.02.57.png

En este ejemplo, lo que hacemos es aumentar y disminuir la luminosidad de un LED de manera progresiva.

De este ejemplo, por el momento, vamos a ver concretamente la parte relacionada con el condicional. En este algoritmo, el condicional aparece en las siguientes líneas.

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
}

Puede parecer algo lioso en un primer momento, pero conforme avancemos y veamos ejemplos, te familiarizarás con estas estructuras.

Iteraciones (for/while)...

...en Arduino

Definiremos como iteración a la ejecución sistemática de una serie de acciones determinadas mientras se dé una condición específica. Existe una condición que se analiza, normalmente, cada vez que se repite dicha iteración. Si esta condición se sigue cumpliendo, volveremos a repetir el proceso; si, por el contrario, ya no se cumple, pasaremos a la siguiente línea de código y ejecutaremos la acción correspondiente.

Las dos más comunes son for y while. En la sentencia for, existe un índice cuyo valor va aumentando o disminuyendo conforme se ejecuta el algoritmo y la condición de la iteración va comprobando si se ha alcanzado el límite o no.

Un esquema de esta estructura sería:

for (int indice= inicial; índice<= final; índice ++){
    Acción
}

Es importante no olvidar colocar los paréntesis, puntos y comas y los corchetes donde corresponda, o Arduino se quejará y no nos hará caso...

A parte del bucle for existe el bucle while, cuyo esquema general sería:

while (condición){
    Acción
}

Un ejemplo, para verlo en funcionamiento aunque no tengo mucha utilidad real, sería:

int var = 0;
while (var < 200) {
  // haz algo 200 veces
  var=var+1; //también podría escribirse como var++.
}

En él, hemos creado una variable con el valor 0, la cuál es aumentada dentro del bucle while con la operación var = var+1. Antes de aumentar este valor, en la línea superior deberíamos escribir la acción a ejecutar 200 veces.



Palabras reservadas

Librerías

Puerto serie

 

REFERENCIAS:

Sentencia for en Arduino y ejemplo: https://www.arduino.cc/reference/en/language/structure/control-structure/for/
Sentencia while en Arduino y ejemplo: https://www.arduino.cc/reference/en/language/structure/control-structure/while/Cerrada Somolinos, J. A., & Collado Machuca, M. E. (2015). Fundamentos de programación. Editorial Universitaria Ramón Areces : UNED.
Puerto serie: https://www.luisllamas.es/arduino-puerto-serie/