¿Qué es una Variable?
Una variable es un elemento de nuestro sketch que guarda un determinado contenido. Ese contenido (el valor de la variable) se podrá modificar en cualquier momento de la ejecución del sketch. Lo podemos imaginar como un recipiente: al recipiente le podemos dar un nombre y podemos elegir su tamaño.
Declaración e inicialización
En Arduino antes de poder utilizar una variable debemos crearla, a esto se llama declarar una variable, y también podríamos asignarle un valor inicial, y a esto le llamamos inicializar la variable. A continuación unos ejemplos de cómo podemos hacerlo.
Ejemplo 1
int nombreVariable1, nombreVariable2, nombreVariable3; //Crea 3 variables de tipo int long nombreVariable; //Crea una variable de tipo long float nombreVariable = 2.1; //Crea una variable tipo float con el valor inicial de 2.1
Asignación
Para cambiar el valor de una variable, que esté o no inicializada, usaremos el operador de igualdad “=” de acuerdo al siguiente ejemplo.
Ejemplo 2
nombreVariable = 22; //Se asigna 22 a la variable nombreVariable x=y+25; //Se asigna el valor de la variable y + 25 a la variable x valorPrevio=valorActual; //El valor de la variable valorActual es copiado a la variable valorPrevio
¿Qué es el ámbito de una variable?
El ámbito de una variable las define como globales o locales, las variables globales son las son definidas antes y fuera de las secciones de void setup(), void loop() u otra función en nuestro sketch. Y las locales son todas las que están definidas dentro de alguna función. Las variables globales reservan un espacio de memoria RAM permanentemente, y las locales lo hacen solo mientras se ejecute la función, liberando el espacio de memoria al terminarse de ejecutar la función. Por esto, las variables globales las podemos modificar desde cualquier punto del sketch, y las locales solo dentro de las funciones dentro de las cuales está declarada.
Tipos de Variables
Hay muchos tipos de variables en Arduino. El tipo de cada una lo definiremos de acuerdo a los datos que vamos a guardar en la variable.
Nombre | Tamaño | Rango | Ejemplo |
boolean | 1 bit | 1 o 0 | boolean bitEncendido=0; |
byte | 8 bit | 0 a 255 | byte valor=20; |
char | 8 bit | -128 a 127 | char código=′B′; |
int | 16 bit | -32,768 a 32,767 | int val1=30000; |
long | 32 bit | -2,147,483,648 a 2,147,483,647 | long suma=100000; |
float | 32 bit | -3.4028235E+38 a 3.4028235E+38 | float constanteA = 5.235; |
unsigned char | 8 bit | 0 a 255 | unsigned char letra1=′A′; |
unsigned int | 16 bit | 0 a 65,535 | unsigned int sensor=50000; |
unsigned long | 32 bit | 0 a 4,294,967,295 | unsigned long conteo10=1; |
Conversión de variables (Cast)
Cuando usamos las funciones de conversión, forzamos los cálculos a ejecutarse haciendo una conversión en el tipo de variable, la variable nunca cambia su tipo. Las funciones de conversión son las siguientes: char(), byte(), int(), word(), long() y float(), y como parámetro pasamos la variable. Esto también es útil cuando queremos asignar una variable de un tipo a otro tipo. Como ejemplo veamos el siguiente programa.
Ejemplo 3
float resultado; //Declara una variable de tipo float int variable1=10; //Declara una variable de tipo int int variable2=4; //Declara una variable de tipo int void setup() { Serial.begin(9600); //Inicializa la comunicación serial a 9600 baudios resultado= variable1/ variable2; //El resultado de la división se asigna a resultado Serial.print("El resultado es "); //Imprime en el monitor serie un texto Serial.println(resultado); //Imprime en el monitor serial el valor de la variable resultado } void loop() {}
El resultado que tenemos no es el esperado, y es porque dado que sólo intervienen variables tipo int en el cálculo, el resultado es guardado en una variable tipo int, antes de asignarla a la variable tipo float. Por tanto si queremos resolver el problema usaremos una de las funciones de conversión.
Ejemplo 4
float resultado; //Declara una variable de tipo float int variable1=10; //Declara una variable de tipo int int variable2=4; //Declara una variable de tipo int void setup() { Serial.begin(9600); //Inicializa la comunicación serial a 9600 baudios resultado= float(variable1)/variable2; //usamos la función de conversión en una de las variables Serial.print("El resultado es "); //Imprime en el monitor serie un texto Serial.println(resultado); //Imprime en el monitor serial el valor de la variable resultado } void loop() {}
Al ser una de las variables de la división tratadas como float, el resultado es guardado temporalmente en una variable float para luego asignarla a resultado.
Constantes
Las constantes se pueden entender como variables de solo lectura, cuando intentemos modificarlas el compilador dará un error. Lo único que hay que hacer para definirla es preceder la declaración de la variable con la palabra clave “const”. Por ejemplo:
const int valor1=125;
Existen otras constantes definidas en el lenguaje Arduino. Las constantes true y false son unas de ellas, false es la más fácil de definir y es igual a 0, y true aunque puede interpretarse como 1 correctamente, en un sentido más amplio es definida como no 0.
Operadores aritméticos
Los operadores aritméticos empleados en lenguaje Arduino son los siguientes:
= operador de asignación
+ Operador suma
– Operador resta
* Operador multiplicación
/ Operador división
% Operador módulo
Operadores compuestos
Son aquellos que nos permiten abreviar código y los usados en Arduino son los siguientes
Símbolo | Ejemplo y descripción |
++ | x++; // incrementa x en uno y retorna el valor anterior de x |
— | x– ; // decrementa x en uno y retorna el valor anterior de x |
+= | x += y; // equivalente a la expresión x = x + y; |
-= | x -= y; // equivalent to the expresión x = x – y; |
*= | x *= y; // equivalente a la expresión x = x * y; |
/= | x /= y; // equivalente a la expresión x = x / y; |
%= | x %= y; // equivalente a la expresión x = x % y; |
Orden de las operaciones
Es importante que estemos claros con respecto al orden en que se ejecutan las operaciones para evitar errores cuando usamos fórmulas, en la siguiente tabla se muestran de mayor a menor prioridad.
Símbolo | Descripción | Ejemplos |
( ) | Paréntesis | (x+y)*z |
++ — | Incremento, decremento | x++, y– |
* / % | Multiplicación, división, modulo | x * 1.5 |
+ – | Adición, sustracción | y + 10 |
< > <= >= | Comparaciones menor que, mayor que | if (x < 255) |
== != | Igual o diferente | if (x == HIGH) |
&& | AND lógico | if (x == HIGH && x > y) |
|| | OR lógico | if (x == HIGH || x > y) |
= += -= *= /= | Asignación y asignación compuesta | x = y |
Y nuestra lección del día de hoy no podría quedar completa si no realizamos algunos ejercicios para practicar nuestros nuevos conocimientos.
Ejercicios
Ejercicio 1: Hola Mundo
Realizar un programa que imprima en el monitor serie el texto “Hola Mundo”.
Ejercicio 2: Suma de números
Realizar un programa que me permita sumar dos números, uno sera el valor 120 el cual estará guardado en una variable, y el otro sera el numero 50, el cual lo escribiremos directamente (sin guardarlo en una variable). Guardaremos el resultado en una variable y lo imprimiremos en el monitor serie.
Ejercicio 3: Incremento de números
Realizar un programa que incremente e imprima el valor de una variable en el monitor serie continuamente. La variable se inicializará en 30000. Observar el resultado por unos segundos.
Ejercicio 4: Multiplicación de dos números
Realizar un programa que usando dos variables me permita multiplicar los números 100 y 1000, y guarde el resultado en una tercera variable. Debo visualizar el resultado en el monitor serial y comprobar el resultado.
Ejercicio 5: División y modulo
Realizar un programa que usando dos variables me permita dividir el número 100 entre 30, y guarde el resultado en una tercera variable. Debo visualizar el resultado de la división y el modulo (resto) en el monitor serial y comprobar el resultado.
Aún no te has suscrito a nuestro boletín? Suscríbete y te mantendré informado de la últimas publicaciones y entregas especiales. Y si tienes alguna pregunta o comentario acerca del post no dudes en hacerla.
Excelente explicación.
LLevo unos dias buscando metodos de aprender la programación del Ide de arduíno, y lo que te llevo leido me esta
sorprendiendo en cuanto a la facilidad de asimilación con tus lecciones. Espero me sigas sorprendiendo.