Icono del sitio Home Assistant Fácil

Tipos de datos en Arduino

El lenguaje de programación que se utiliza en Arduino está basado en Processing, un lenguaje de programación muy similar a C++. A la hora de enfrentarnos a un desarrollo debemos tener claro desde el principio los tipos de datos en Arduino. En este artículo vamos a repasar los conceptos básicos a la hora de programar.

Lo primero que veremos son las directivas de precompilador. Estas directivas se ejecutan antes de compilar el código y no se ejecutan en tiempo de ejecución como el resto de código. Nos permite incluir ficheros, definir constantes y aplicar condicionales.

#define DEBUG #ifdef DEBUG ... #else ... #endif

Ahora veremos los tipos de datos que podemos usar cuando programamos para Arduino. Para definir una variable debemos escribir primero el tipo, luego un nombre descriptivo y por último podemos asignar un valor inicial, esto último no es obligatorio en la declaración.

tipo nombre = valor;

Números

Textos

Complejos

int d[2][2]={ {1,1},{1,0}}:
int c[3]={1,2,3};
struct posicion{
  int x;
  int y;
  float angulo;
};

posicioon pos;

void setup(){
	// Inicializamos la estructura       
        pos.x = 0;
        pos.y = 0;
        pos.angulo = 0;
}

Otros tipos de datos

// Declaramos la enumeración que nos indica el estado del PH
enum EstadoPH {
	desconocido,
	reposo,
	activo,
	error
};

// Declaramos una variable que almacenará el estado del PH
EstadoPH dispositivoph;

void setup(){
	// Inicializamos la variable
	dispositivoph = desconocido;
}

void loop() {
	// Comprobamos el estado del dispositivo de PH
	if(dispositivoph == desconocido)
	{
		// Cambiamos el estado del dispositivo de PH
		dispositivoph = activo;
	}
}
// Así se declara el typedef
typedef enum unaEnumeracion miNuevaEnum;
typedef float anguloRota;
typedef struct unaStructura miNuevaStru;
 
// Para declarar una variable de esos tipos
miNuevaEnum variableEnum;
anguloRota variableFloat;
miNuevaStru variableStru;
union {
    byte b[4];
    float f:
} val;

Punteros

Almacena la dirección de memoria de otra variable. Es muy útil cuando estamos trabajando con variables con mucha información como por ejemplo estructuras o arrays muy grandes. En estos casos pueden llegar a tener cientos de bytes mientras que la dirección de memoria solo tiene 2 bytes. Para evitar pasar la información de un sitio a otro utilizamos los punteros que son la dirección física donde está guardada la información. Veamos un ejemplo:

// Declaramos una variable del tipo String con un texto largo
String var1 = "Sed case blandit te, eos ignota imperdiet consectetuer et, in pro enim delenit. Ex lorem doming delicatissimi usu. Id expetenda periculis definitiones mei, ius soluta volutpat postulant ex. Id vitae impedit disputationi sed, sumo rebum te usu, te affert primis appetere his. Ut duo ferri mazim laudem, te alterum probatus definitiones nec, duo dolor aeterno mediocrem eu.";

// Declaramos un puntero que será del tipo int
// Almacenará la dirección de memoria y se declara con el signo * antes del nombre
int *p_var1;

// Asignamos la dirección de memoria aplicando a la variable que se quiere obtener
// la dirección de memoria el símbolo &
p_var1 = &var1;

// Modificar el puntero o la propia variable surte el mismo efecto
*p_var1 = "Pepe";
Salir de la versión móvil