arduino-variables-tipos-ambito

Qué son las variables en Arduino

  • 5 min

Para manejar Arduino necesitaréis combinar electrónica y programación. Tenéis que aprender las cosas, tienen que ir juntas de la mano.

Por algún sitio hay que empezar 😊. Así que vamos a empezar por una iniciación a la programación, y en la siguiente sección veremos hardware y electrónica.

Si estáis empezando mi recomendación es que vayáis alternando. Aprendes un poquito de programación, luego electrónica, luego programación, luego electrónica… cada vez las dos un poco más dificil.

De momento vamos a ver lo básico de programación para que puedas empezar a hacer tus proyectos con Arduino. Si quieres aprender programación más, tienes toda esta página web, como por ejemplo este curso 👇.

Aprende a programar en el curso de introducción a la programación

Así que empezamos a ver como programar nuestro Arduino, viendo lo que son las variables las Variables.

¿Qué es una variable?

Una variable es un pequeño espacio en la memoria del Arduino que reservamos para guardar un dato. Como si fuera una caja de mudanza.

Para que el Arduino no se líe con tanta caja, necesitamos hacer dos cosas obligatorias al crearla:

  1. Ponerle una etiqueta (Nombre): Para saber cómo pedirle ese dato después (velocidad, brillo, pinLed).
  2. Decirle qué cabe dentro (Tipo): No es lo mismo guardar un calcetín que una enciclopedia. En programación, tenemos que definir el Tipo de Dato antes de usarlo.

Los tres tipos fundamentales

Aunque C++ (el lenguaje de Arduino) tiene muchos tipos, para empezar solo necesitáis dominar estos tres. Cubren el 99% de vuestras necesidades iniciales.

Los int son las cajas estándar. Sirven para guardar números enteros, sin decimales.

  • Rango: Desde -32,768 hasta 32,767 (en Arduino UNO).
  • Usos: Números de pines (int led = 13), contadores (int vueltas = 0), lecturas analógicas (0 a 1023).
int edad = 35;
int pinLed = 13;
Copied!

Los float son cajas especiales para números con coma decimal.

  • Usos: Matemáticas precisas, lecturas de sensores de voltaje real (2.5V), temperatura (23.4ºC).
  • El precio a pagar: Son mucho más lentos de procesar para el Arduino y ocupan más memoria. **No uséis float si podéis usar int**.
float temperatura = 23.5;
float voltaje = 4.88;
Copied!

Los bool son las cajas más pequeñas. Solo pueden contener dos valores: Verdad o Mentira.

  • Valores: true (1) o false (0).
  • Usos: Estados de interruptores, banderas de control (“¿Está el sistema encendio?”).
bool sistemaEncendido = true;
bool esDeNoche = false;
Copied!

El ámbito

Cuando creamos una variable, no siempre es visible para todo el código. Depende de dónde la escribamos. Esto se llama Ámbito de la variable.

Son las variables que declaramos fuera de cualquier función, normalmente al principio del todo del código (antes del setup).

  • Visibilidad: Todo el mundo (el setup, el loop y cualquier otra función) puede verlas, leerlas y escribirlas.
  • Duración: Nunca mueren. Guardan su valor mientras el Arduino esté encendido.

Es como escribir un dato en la pizarra de la clase. Cualquiera que entre en el aula puede ver el número, borrarlo y escribir otro. El dato permanece ahí toda la clase.

Son las variables que declaramos dentro de una función (dentro de las llaves { ... } del setup, del loop o de un if).

  • Visibilidad: Solo existen dentro de esas llaves. Nadie de fuera sabe que existen.
  • Duración: Son efímeras. Se crean cuando empieza la función y se destruyen (se borran) en cuanto la función termina.

Es como escribir un dato en tu libreta de bolsillo. Solo tú lo ves. Cuando sales de la clase (termina la función), arrancas la hoja y la tiras a la basura. Si vuelves a entrar, empiezas con una hoja en blanco.

Ejemplo práctico: El Contador vs El Temporal

Vamos a ver un código que usa ambos tipos para entender la diferencia. Queremos contar cuántas veces parpadea un LED.

// --- VARIABLE GLOBAL ---
// Está fuera. Es la "Pizarra".
// Necesitamos que recuerde la cuenta vuelta tras vuelta.
int contadorTotal = 0; 

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

void loop() {
  // --- VARIABLE LOCAL ---
  // Está dentro. Es la "Libreta".
  // Se crea de nuevo en CADA vuelta del loop.
  int milisegundosEspera = 500; 

  // Aumentamos la cuenta global
  contadorTotal = contadorTotal + 1;
  
  // Imprimimos
  Serial.print("Parpadeo numero: ");
  Serial.println(contadorTotal);
  
  delay(milisegundosEspera);
  
  // Al llegar a esta llave de cierre '}', la variable
  // 'milisegundosEspera' SE DESTRUYE.
  // Pero 'contadorTotal' SOBREVIVE.
}
Copied!
  1. ¿Si meto contadorTotal dentro del loop? En cada vuelta, se crearía una variable nueva, se pondría a 0, sumaría 1… e imprimiría siempre “1”. Al terminar el loop, se destruiría. El Arduino tendría amnesia.
  2. ¿Por qué no hago todas globales y me quito de líos? Es tentador, pero es una mala práctica. Si tienes un programa con 100 variables globales, es muy fácil equivocarse y usar una variable para dos cosas distintas sin querer. Además, ocupan memoria RAM permanentemente.

Consejos de nomenclatura

Para terminar, un consejo sobre cómo bautizar vuestras variables. Arduino no admite espacios.

  • int numero led = 13;Error fatal.
  • int numero_led = 13; ✅ Bien (snake_case).
  • int numeroLed = 13; ✅ Mejor (camelCase, el estándar de Arduino).

Y por favor, sed descriptivos con los nombres.

  • int x = 13; 😕 ¿Qué es x?
  • int pinLedRojo = 13; 😎 Profesional.