Skip to content

¿Qué son las funciones void setup y void loop?

Si es tu primera vez que has instalado el IDE de Arduino, seguramente te estés preguntando: ¿Y ahora qué? Y si has visto tutoriales en youtube, o seguido alguna guía de un libro, seguramente te han dicho que crees un nuevo sketch (así se llaman los programas de Arduino), y cuando lo has creado, te ha salido algo como esto.

void setup() {
  // put your setup code here, to run once:
}
void loop() {
  // put your main code here, to run repeatedly:
} 

¿Para qué sirve todo ese código que se ha creado por tí? ¿Es necesario en el programa? ¿Puedo borrarlo sin preocuparme? Todas estas preguntas, serán resueltas en esta lección.

Video explicativo sobre las funciones void setup y void loop

¿Qué puedo hacer y qué no puedo hacer en un sketch de Arduino?

Antes de ver a detalle las funciones void y loop, vamos a analizar algunas cosas que se pueden hacer, y otras que no.

Por ejemplo, ¿Qué pasaría si borráramos todo el código que ha sido generado, y tratamos de compilar el sketch? Para el que no sepa, compilar se refiere al hecho, de convertir el código del sketch de Arduino, a un código que entiende la placa del Arduino. Si se encuentra un error en el código, esta conversión no podrá ser realizada, por lo que nos saltará un error.

Y en el caso de la pregunta, la respuesta, es que el IDE de Arduino, te marcará un error.

Entendiendo el Sketch de Arduino

Esto pasa, porque se necesita a fuerzas, mínimamente el código que ha sido generado por tí, por lo que no debes de borrarlo, o cambiar el nombre de las funciones. Podrías pensar que un cambio de setup a Setup (nótese la S mayúscula), es mínimo  y no debería de afectar la compilación, sin embargo, si tratas de compilar con este cambio, tendrás otro error del compilador.

Hablando de los espacios, éstos son permitidos en la cantidad que quieras, el compilador al final, no los tomará en cuenta, por lo que este código, sería totalmente válido.

void setup(                 ) {
  // put your setup code here, to run once:
}
void                            loop() {
  // put your main code here, to run repeatedly:
} 

Lo que no es permitido, es quitar espacios donde antes existían, por ejemplo, el siguiente código te marcará un error de compilación.

voidsetup() {
  // put your setup code here, to run once:
}
void loop() {
  // put your main code here, to run repeatedly:
} 

Ya que no se sabrá, si voidsetup, así junto, se refiere a una nueva palabra, otra función, etcétera.

La función void setup en Arduino

Ya que hemos visto algunos conceptos de sintaxis en Arduino, vamos a hablar de la función setup.

Pero ¿qué es una función? En otra publicación, hablaremos en profundidad sobre este tema, pero a grandes rasgos, es una pieza de código, que te permite encapsular instrucciones para procesarlas.

El caso de la función setup, es un caso especial, ya que será, una función que va a ser llamada, sí o sí, la primer vez que se ejecute cualquier sketch de Arduino.

La segunda característica, es que sólo se ejecutará una sola vez, a lo largo de la ejecución del sketch, por lo que debemos aprovechar dicha función, para inicializar variables, componentes, pines de Arduino, etcétera.

La función void loop en Arduino

La palabra loop, significa ciclo, y eso es precisamente, lo que hace esta función.

Su principal característica, es que se ejecutará infinitamente, por lo que, aquí tendremos que escribir toda la lógica de programación, que forme parte de nuestro programa.

Por ejemplo, aquí podríamos estar comprobando constantemente la temperatura a través de un sensor, o bien comparando si se cumple una condición para prender o no un led, etcétera.

Como mencioné anteriormente, la función se ejecutará infinitamente, por lo que hay que cuidar en no caer, en instrucciones, que nos podrían hacer perder el control del flujo del programa. Ya hablaremos del tema en otra ocasión.

Ejemplo tipo ejercicio de la función void setup y void loop con Arduino

Para que compruebes con tus propios ojos la funcionalidad de estas funciones, me gustaría que te crearas una cuenta en tinkercad, es totalmente gratuita.

Una vez creada la cuenta, abriremos la aplicación de Circuits.

función void setup en Arduino

Y procederemos a dar click en el botón verde, que dice “Crear nuevo circuito”.

Esto te abrirá una interfaz, con una serie de componentes. Lo que haremos en esta práctica, será arrastrar un Arduino UNO desde los componentes, a la interfaz principal.

Función void loop Arduino

Con el Arduino en la interfaz, podremos dar click sobre la pestaña que dice “código”.

Arduino setup y loop

En la lista desplegable donde dice bloques, seleccionaremos “Texto”, confirmado que deseamos perder cualquier cambio no guardado.

arduino setup

Esto nos genera un código, al cual no quiero que le prestes mucha atención, ya que poco a poco, iremos aprendiendo sobre los diferentes conceptos.

Lo que me interesa en estos momentos, es que activemos el modo depuración.

La depuración, es una herramienta, que nos va a ayudar, a saber qué valores tiene nuestro programa en cierto punto. En este caso, nos va a servir para detectar, cuántas veces se entra a la función setup, y cuántas veces a la función loop. Activemos la característica, dando click en el bicho que aparece arriba.

arduino loop

La depuración, funciona colocando algo que se llama “breakpoint”, que en español sería algo como “punto de quiebre” o “punto de interrupción”. Esto lo haremos en la sección de los números que vemos a la izquierda.

Para este ejemplo, colocaremos un punto de quiebre en la línea 3, y otro en la línea 8.

arduino breakpoint

Con los breakpoints aplicados, vamos a iniciar la Simulación del programa, dando click sobre el botón que muestro en la imagen.

arduino tinkercad

Inmediatamente, al ser lanzado el programa, vemos que una de las líneas es coloreada con un color azul. Esto significa, que la ejecución, se ha detenido en esa línea, y se encuentra en espera para darle permiso a seguir.

Quiero que notes, cuántas veces se colorea la línea de azul.

arduino depruación

Para continuar la ejecución del programa, debemos dar click en el botón de la derecha, que tiene un signo de “Play”.

arduino void

Una vez ejecutado el botón, veremos que ahora, la línea coloreada, es la que marcamos en la línea 8, con lo que deducimos, que se ha terminado la ejecución de la función setup, y ha iniciado la de la función loop.

Si volvemos a dar click en el botón de “Play”, veremos que después de alrededor de 2 segundos, la línea 8 se volverá a colorear. Esto significa, que se ha completado un ciclo, y que estamos iniciando de nuevo el ciclo loop.

Por más que demos click en el botón de Play, siempre terminaremos en la misma línea, pero, lo más importante, es que nunca regresaremos a la línea 3, que es la funcionalidad del método setup.