Uso de matrices en Arduino

Las matrices son arreglos de dos o más dimensiones usados para almacenar conjuntos de datos al programar en Arduino. EL conjunto de datos que puede almacenarse en una matriz pueden ser: datos recopilados por sensores, cadenas de texto y valores booleanos como alto y bajo.

A diferencia de las variables en Arduino que son capaces de almacenar un dato a la vez, las matrices pueden almacenar distintos valores al mismo tiempo.

La forma más sencilla de comprander cómo funcionan, es visualizarla como contenedores de datos, capaces de almacenar varios elementos a la vez.

A continuación vamos a profundizar más en lo que son las matrices en la programación de Arduino.

Uso de matrices en Arduino

La sintaxis para declarar una matriz en Arduino es la siguiente:

int array[4] = {7, 3, 1, 9};

En la sección anterior, se ha declarado una matriz para números enteros (int) de nombre array[].

El número dentro de los corchetes es el índice de la matriz, el cual define el número de datos que puede almacenar.

En la matriz de índice 4 que hemos declarado, están reservados 4 espacios en memoria. Los valores que hemos dado a cada espacio serán ocupados por los números (7, 3, 1 y 9).

Los espacios ocupados por cada valor en la matriz anterior se cuentan a partir del número 0 cero.

Es decir en la matriz anterior declarada el número 7 ocupa la posición 0, el 3 la 1, el 1 la posición 2 y por último el número 9 ocupa la 3.

Partiendo de lo anterior, si deseamos mostrar en pantalla el número 3 almacenado en la matriz anterior, la sintaxis correcta será la siguiente:

Serial.print(array[1]);

De igual forma las matrices también se pueden declarar sin inicializar sus elementos.  Éstos pueden agregarse más adelante en nuestro código.

Para declarar una nueva matriz, sin darle valor, hay que declararla al inicio de nuestro código utilizando la siguiente sintaxis:

int array[8];

Al declarar una matriz con la sintaxis anterior, podremos almacenar hasta 8 valores distintos.

Pero también es posible solo asignar un valor a un índice específico en una matriz al programar en Arduino. la siguiente sintaxis almacenará el número 7 al primer índice de la matriz array[]:

array[0] = 7;

De igual forma las matrices en Arduino se pueden inicializar sin establecer su tamaño.

La sintaxis correspondiente para la firmación anterior sería la siguiente:

int array[] = {6, 2, 8, 3}; 

Al no asignar un valor dentro de los corchetes, el tamaño de la matriz se ajustará de forma automática en 4. Ya que se está pidiendo almacenar 4 datos distintos: el 6, el 2, el 8 y el número 3.

Tipos de datos en las matrices de Arduino

En los ejemplos anteriores, se almacenaron datos enteros en nuestra matriz. Sin embargo también es posible almacenar otros tipos de datos como float, string, byte y char.

No obstante todos los elementos de una matriz deben almacenar el mismo tipo de datos.

Matrices de caracteres

Si se desean almacenar caracteres en una matriz en la programación de Arduino, se debe declarar la matriz con un tamaño superior al número real de caracteres que queremos almacenar.

En una matriz de caracteres siempre se reserva un espacio, denominado elemento nulo.

La siguiente es la sintaxis correcta, para almacenar la frase «Bienvenido»:

char array[11] = {"Bienvenido"};

Proyecto didáctico de uso de matrices

Para asignar valores aleatorios a las matrices es necesario utilizar bucles.

El bucle for por ejemplo, nos ayuda a establecer automáticamente el los estados de voltaje de múltiples pines al mismo tiempo.

Un ejemplo de esto sería un circuito que controla una matriz de LED.

Cada LED de la matriz parpadeará uno tras otro:

 

Matriz LED Arduino - Diagrama de cableado

 

El siguiente código en Arduino, controla el parpadeo de los LEDS mediante una matriz:

int ledPins[6] = {12, 11, 10, 9, 8, 7};

void setup() {

  for (int i = 0; i < 6 ; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
}

void loop() {

  for (int j = 0; j < 6; j++) {
    digitalWrite(ledPins[j], HIGH);
    delay(500);
    digitalWrite(ledPins[j], LOW);
    delay(500);
  }
}

En el código anterior lo primero es definir la matriz llamada ledPins[] que almacenará los valores de los 6 pines conectados a los LED (pines 7-12).

Normalmente estableceríamos los modos de pin para cada pin en el bloque setup()

Se establece un bucle for en i igual a 0.

Luego establecemos el índice de cada elemento con i<6. incrementando i++ en cada iteración del bucle for.

En el bloque del código del ciclo for, encontramos una función pinMode().

El primer argumento en la función pinMode() es normalmente el número de pin que se establecerá como entrada o salida. Sin embargo en su lugar asignamos la matriz ledPins[] con variable de conteo i dentro de los corchetes.

Cada pin es una salida, por lo que el segundo argumento de pinMode() es OUTPUT.

El ciclo for se repetirá seis veces, configurando el modo pin en la salida para cada elemento del ledPins[].

En el bloque loop(), tenemos otro bucle for que hará que cada LED parpadee durante 500 milisegundos, uno tras otro.

Dentro del bucle for, declaramos una cuenta variable j igual a 0.

Deseamos iterar sobre cada elemento de la matriz ledPins[], por esta razón establecemos la condición en j<6.

Se incrementa j++ con cada iteración del bucle for. El código en el cuerpo del bucle for se ejecutará una vez para cada elemento del ledPins[].

El ciclo for continuará ciclando a través del elemento cinco, momento en el cual el Arduino sale del ciclo for y regresa a la parte superior del ciclo del loop().

Matrices de dos dimenciones

Hasta ahora hemos hablado de matrices unidimensionales, pero también existen matrices bidimensionales.

A diferencia de las matrices unidimensionales que solo pueden almacenar una lista de valores, los arreglos bidimensionales pueden almacenar dos listas de valores.

La sintaxis para declarar una matriz de dos dimenciones en Arduino es la siguiente:

int twoDimArray[2][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8}
};

El primero número [2] establece el número de filas en la matriz.

El segundo [4] establece el número de elementos en cada fila.

EL ejemplo anterior define una matriz con 2 filas y 4 columnas.

Esperamos que este sencillo tutorial te haya mostrado el uso de matrices en Arduino.

Deja un comentario

programar en arduino logo

En este sitio aprenderas a programar en Arduino de forma gratuita a través de sencillos tutoriales y distintos proyectos.