Skip to content

Variables en Arduino

Variables en Arduino

Saber qué es una variable, y cómo utilizarlas en Arduino, es una tarea indispensable para todo aquel que quiere adentrarse en el mundo de arduino. Es por ello, que en este artículo, cubriremos cada uno de los aspectos que necesitas saber al trabajar con ellas.

https://youtu.be/rWoyZTFlgWI

¿Qué es una variable en Arduino?

Una variable, es un espacio en la memoria del microprocesador, que nos va a permitir guardar información sobre algo que necesitemos. Tomemos un ejemplo de la vida real, si te digo en estos momentos: “En mi escritorio me encontré una moneda de 20 pesos”, y te pregunto inmediatamente: “¿De cuánto era la moneda que me encontré?”, seguramente, responderías que de 20 pesos.

Esto es, porque en algún lugar de tu memoria, se creó un espacio para almacenar esta información, con nuestro Arduino, podemos hacer exactamente lo mismo, reservar un espacio para almacenar valores.

Esto lo haremos precisamente con el uso de variables.

Ejemplos del uso de variables con Arduino

Te voy a mostrar un par de ejemplos donde se utilizan variables. Primero, en una publicación anterior, mostré 10 juegos con Arduino con el LCD, Uno de ellos muestra la siguiente  interfaz.

variables en Arduino

Ese número 95 que aparece en la esquina superior derecha, va sumando la puntuación que tiene el jugador conforme va avanzando, ¿Y dónde crees que se almacena la información? En una variable.

Pasemos al segundo ejemplo, en un proyecto que hicimos con Arduino y el sensor HC-SR04,  veamos la siguiente imagen.

variables en Arduino

Como podemos ver, tenemos  un display, que nos va desplegando información, específicamente la distancia que existe entre un objeto y el sensor HC-SR04. Sin embargo, este cálculo de la distancia en centímetros, tiene  que hacerse de forma manual, el sensor no regresa este dato, por lo tanto, hay que almacenarlo también en una variable.

¿Cómo se declara una variable en Arduino?

La declaración de una variable en Arduino, es muy parecida a como se hace en muchos otros lenguajes de programación, y es que, al ser Arduino un lenguaje basado en C++, comparte muchas características de este.

En primer lugar, debemos saber qué tipo de dato utilizaremos. Ya en otra ocasión hemos hablado de este tema. Una vez que conocemos el tipo de dato que utilizaremos, bastará con que sigamos esta fórmula:

tipo de dato + nombre de la variable + ;

Por ejemplo, supongamos que deseamos trabajar únicamente con un dato entero, es decir, un número que no lleve puntos decimales. Para este propósito, podríamos declarar algo como lo siguiente:

int dato1;
dato1 = 8; 

La primera línea, reservará un espacio en la memoria, para alojar un dato entero que aún no ha sido asignado, mientras que la asignación del valor a la variable se hará en la segunda línea.

Hay otras formas de declarar variables en Arduino, otra de ellas, es hacer la asignación del valor, directamente en la creación de la variable, como por ejemplo, así:

bool isRunning = true; 

Aquí podemos apreciar, cómo nos ahorramos una línea de código. Otra de las formas, es hacer la asignación de múltiples variables en la misma línea, siempre y cuando sean del mismo tipo de dato. Veamos un ejemplo.

int pin1, pin2, pin3, pin4, pin5; 

¿Cómo asignar valores a una variable en Arduino?

Es normal que el valor de una variable cambie conforme avanza la ejecución de nuestro programa. Para llevar a cabo este cambio, tendremos que asignar el valor a la variable, de derecha a izquierda, y siempre teniendo en mente que debe ser del tipo de dato de la variable a la que deseamos asignar el valor, no podremos por ejemplo tratar de asignar una cadena a un tipo de dato int. Veamos un ejemplo de ello.

pin5 = 20; 

El código anterior es bastante sencillo, aunque también podríamos hacer cálculos complejos.

int suma = (sensor1 + sensor2) / constante; 

Recomendaciones sobre la declaración de variables en Arduino

Hay algunos tips que harán que tu código de Arduino, sea más entendible, tanto para tu yo del futuro, como para tus compañeros que vean tus sketchs. Aquí te enlisto algunas de ellas.

Que tengan sentido: No es lo mismo nombrar una variable “ledPin”, que “variable1”. En el primer caso, entendemos que se refiere a un pin donde hay un led, mientras que en el segundo caso, no sabemos a qué se refiere esa variable.

Ámbito local y global en una variable

Supón que hemos declarado el siguiente código en nuestro Sketch.

void setup() { 
  int valorSensor1 = 32;
}
void loop() {
  valorSensor1 = 22;
} 

Tal vez pienses, que debería funcionar correctamente. Sin embargo, si lo ejecutas, te encontrarás con un error del IDE de Arduino, que te dirá:

‘valorSensor1’ was not declared in this scope

¿A qué se refiere esto? Existe en la programación, algo que se llama Ámbito de la variable, es decir, cuál es el alcance que tiene una variable para poder ser utilizada.

En nuestro ejemplo, la variable ha sido declarada dentro del método setup, por lo que ese es su alcance. Regularmente, el alcance lo podremos saber por las llaves. Una variable no podrá ser alcanzada fuera de las llaves donde fue declarada, pero sí, podremos utilizar una variable que ha sido declarada fuera de las llaves hacia dentro. Por ejemplo, la siguiente declaración sería inválida:

void setup() { 
  int valorSensor1 = 32;
  if(true){
    int valorSensor2 = 2;
  }
  valorSensor2 = 2;
} 

mientras que esta otra, sería totalmente válida

void setup() { 
  int valorSensor1 = 32;
  if(true){
    int valorSensor2 = 2;
    valorSensor1 = 5;
  }  
} 

También contamos con algo que se llaman, las variables globales, las cuales, podrán ser utilizadas en todo el sketch de Arduino. Estas se declaran fuera de los métodos, regularmente al inicio del sketch, y su alcance, como su nombre lo dice, es global. Aquí un ejemplo.

int variableGlobal = 22;
void setup() { 
  variableGlobal = 2;
}
void loop() {
  variableGlobal = 88;
} 

Declaración de constantes en Arduino

En el lenguaje Arduino, contamos con un tipo de variable especial, llamada Constante. Este  tipo de variable, mantendrá su valor durante el transcurso de todo el sketch, por lo que si tratamos de asignar un nuevo valor a dicha variable, habrá problemas en la compilación.

¿En qué casos es necesario esto? En casos en los que sabemos que no existirán cambios de valor, o que no deberían de existir cambios, como por ejemplo, si deseamos declarar el valor de PI, o una asignación de un pin.

Estas constantes deben declararse a nivel global, y si se trata de modificar el valor de las mismas, el mismo IDE nos marcará un error. Aquí un ejemplo.

const int pinSensor = 3;
const float ValorPI = 3.1416;
void setup() {   
}
void loop() {  
}