Las variables escalares son un recurso del lenguaje C que permiten almacenar valores dentro del microcontrolador. Estos valores son siempre números, que en algunos casos son interpretados como letras con ayuda de códigos como el código ASCII.
Las variables se utilizan frecuentemente en todos los programas de C.
Por ejemplo, cuando leemos el valor de un pin y lo almacenamos dentro
del microcontrolador para ser usado posteriormente.
DECLARACIÓN DE VARIABLES.
Para que el lenguaje C sepa que un determinado nombre es una variable hay que declararlo previamente. Declararlo significa decirle al entorno de desarrollo que determinado nombre será una variable. Por ejemplo:
int cebollas;
es la declaración de la existencia de una variable que se llama cebollas. Esta variable contendrá más adelante un número, que puede ser positivo o negativo. Para declarar una variable es necesario poner una palabra clave antes del nombre de la variable. Esta palabra clave, llamada tipo de la variable, puede ser alguna de éstas:
boolean
char
int
long
float
que en su mayoría pueden además ir antecedidas por la palabra clave unsigned.
Cada una de las palabras clave anteriores definen una determinada capacidad de almacenamiento de valores para una variable. Por ejemplo:
unsigned char pimientos;
define la existencia de la variable pimientos, que puede contener cualquier número entero positivo de 0 a 255 (también conseguible mediante la palabra reservada byte).
Para este curso utilizaremos normalmente el tipo int, que nos permitirá un rango de valores suficientemente alto (de -32768 a 32767 en la mayoría de las placas) para las prácticas que realizaremos. Como hemos indicado, para declarar la variable cebollas, en nuestro programa escribiremos
int cebollas;
ASIGNACIÓN DE VALOR A UNA VARIABLE.
Una vez que una variable ha sido declarada, otra de las actuaciones que se pueden hacer es asignarle un valor. Este valor puede ser el valor devuelto por una función o un valor constante. Por ejemplo para leer un sensor que se encuentra ubicado en el puerto 5 y asignar ese valor a la variable cebollas habrá que escribir.
cebollas = digitalRead(5);
Esto hará que cebollas valga 1 si el sensor se encontraba activo y 0 si el sensor no se encontraba activo.
También es posible asignar la variable cebollas con un determinado valor, por ejemplo con el valor 25, para lo cual habrá que escribir:
cebollas = 25;
Con las variables pueden realizarse operaciones matemáticas igual que con los números. Por ejemplo
peras = 15;
manzanas = 20;
frutas = peras+manzanas+9;
Al final de este código la variable frutas contendrá el valor 44
ÁMBITOS DE LAS VARIABLES
En el lenguaje C las variables tienen un ámbito de visibilidad, de tal manera que no son visibles para las funciones en las que no han sido declaradas.
Por ejemplo, tomates no sería visible dentro de loop
void setup() {
int tomates;
tomates = 3;
}
void loop() {
// aqui no se puede leer la variable tomates,
// porque ha sido declarada dentro de otra función
}
Igualmente sucede dentro de la función loop. Esto quiere decir que si declaramos una variable dentro del bloque loop, no será visible para el interior de las funciones que se llamen dentro del bloque loop. Sólo será visible para las estructuras de control del propio bloque loop
Para que una variable que ha sido definida dentro del bucle loop sea visible para una función a la cual es llamada hay que pasarla como parámetro a dicha función. Por ejemplo:
void setup() {
}
void loop() {
int tomates;
tomates = 3;
// aqui si se puede leer la variable tomates,
// porque ha sido declarada dentro de loop
// sin embargo, la función analogWrite no tiene acceso a tomates
analogWrite(3, 10);
// para que analogWrite tenga acceso a tomates, es necesario pasarsela
// como parámetro.
analogWrite(tomates, 10) ;
}
Las variables definidas fuera de cualquier función, es decir, en la parte de declaración de un programa de C, son visibles para todas las funciones. Estas variables se denominan variables globales.
int tomates;
void setup() {
}
void loop() {
tomates = 3;
// aqui si se puede leer y escribir la variable tomates,
// porque ha sido declarada fuera de todas las funciones
// es una variable GLOBAL
}