Inicio » Programación para Arduino » Las variables en Arduino

¿Qué es una variable?

Una variable es un espacio de memoria que se utiliza para almacenar datos. Estos datos pueden ser números, texto, objetos u otros tipos de información que se utilicen en un programa.

Las variables permiten a los programadores:

  • Almacenar datos de forma temporal o permanente.
  • Manipular datos de manera más conveniente que si tuvieran que trabajar con valores directamente.
  • Hacer que el código sea más legible y entendible.

Las variables son como cajas de almacenamiento en la memoria del Arduino. Podemos usarlas para guardar cualquier tipo de información que necesitemos. Por ejemplo, podemos usar una variable para guardar el valor de un sensor, el dato obtenido de un pin digital o el resultado de una operación aritmética.

¿Cómo se declaran variables en Arduino?

Cada variable tiene dos partes importantes:

  • El tipo de dato: El tipo de dato de una variable especifica qué tipo de información puede almacenar. Los tipos de datos más comunes en Arduino ya los vimos anteriormente en este artículo: Los tipos de datos en Arduino.
  • El identificador: El identificador de una variable es una etiqueta que se utiliza para acceder a su contenido. Podríamos decir que es el nombre que le damos a la variable. Los identificadores de las variables deben ser únicos dentro del sketch.

Siempre que necesites una variable en Arduino la tendrás que declarar primero, sino obtendrás un error o un resultado inesperado.

Mira el siguiente código:

void setup(){
  Serial.begin(9600);
}

void loop(){
  numero = 5;
  Serial.println(numero);
}

Dentro de la función loop asigno a la variable numero el valor 5 y posteriormente lo envío al puerto serie para que se muestre en el monitor serie. ¿Qué cree que pasará?

Pues que da error:

error identificador no declarado

Si te fijas en el mensaje verás que se queja porque la variable numero no está declarada. Pues la solución es muy simple: declararla.

La forma de declarar variables en Arduino es la siguiente:

tipo identificador [= valor];

El tipo tiene que ser cualquiera de los tipos soportados por Arduino, por ejemplo int, char o float. El tipo tendrá que ser el apropiado para el dato que posteriormente almacenarás en la variable. Si vas a guardar un número entero, no elijas un char, elije un int. Si quieres guardar un número con decimales, no elijas un int, elije un float.

Después viene el identificador. Puedes utilizar cualquier combinación de letras, números y subrayados siempre que no empiece por un número. Se permiten mayúsculas y minúsculas, pero es preferible usar minúsculas para no confundir las variables con las constantes. Y, muy importante, siempre elige un identificador que sea descriptivo. Si vas a guardar el resultado de una suma, tiene sentido que la variable se llame suma o resultado. No tendría mucho sentido que la variable se llamase patata.

Una vez hayas puesto el tipo y el identificador debes terminar la declaración con un punto y coma (;). Con esto sería suficiente para declarar una variable. Te dejo a continuación algunos ejemplos:

int suma;
float temp_sensor;
bool resultado2;

Aunque estas declaraciones son correctas, es muy recomendable que siempre inicialices las variables para evitar errores o resultados inesperados. Inicializar una variable no es otra cosa que asignarle un valor inicial utilizando el operador de asignación (=).

Aquí tienes algunos ejemplos:

int suma = 0;
float temp_sensor = 20.0;
bool resultado2 = false;

Como puedes ver, les asigno un dato del mismo tipo que el de la variable.

Vamos a ver un ejemplo para que lo entiendas mejor.

Mira el siguiente sketch:

void setup(){
  Serial.begin(9600);
}

void loop(){
  int numero;
  Serial.println(numero);
}

He declarado, dentro de la funicón loop, una variable entera con el identificador numero.

En la siguiente línea simplemente envío al puerto serie el valor de la variable para que lo muestre en el monitor serie.

La salida que se mostrará es la siguiente:

salida inesperada por no inicializar una variable en Arduino

¿De dónde sale el -27392? No lo sabemos, es un dato inesperado porque la variable numero está sin inicializar.

Vamos a darle un valor inicial a la variable a ver qué pasa ahora:

void setup(){
  Serial.begin(9600);
}

void loop(){
  int numero = 5;
  Serial.println(numero);
}

Como puedes ver le he asignado un 5 en la misma línea en que la estoy declarando. Si lo volvemos a ejecutar, en el monitor serie vemos esto:

resultado esperado tras inicializar una variable en Arduino

Ahora si aparece el dato que esperábamos.

Mira ahora este otro ejemplo:

void setup(){
  Serial.begin(9600);
}

void loop(){
  int numero;
  int suma = numero + 3;
  Serial.println(suma);
}

Vuelvo a declarar la variable numero sin inicializar y a continuación declaro una nueva variable también entera a la que le asigno la suma de la variable numero y 3. ¿Qué valor crees que se almacenará en suma? Vamos a verlo:

resultado inesperado tras sumar una variable sin inicializar en Arduino

De nuevo nos encontramos con un resultado inesperado.

Ahora estamos usando un ejemplo muy sencillo con un par de líneas de código, pero cuando tu sketch se vuelva más complejo será más difícil identificar cuál es el error. Para evitar problemas, siempre inicializa las variables.

Es tu turno. Abre la lista de tipos de datos y declara variables con diferentes valores. Prueba a poner valores que correspondan con el tipo y otros que no. Después ejecuta el sketch y analiza los resultados. No tengas miedo, que usar un tipo incorrecto no va a estropear tu Arduino. Experimentando es la mejor forma de aprender.