Está en la página 1de 5

Tipos de Datos: Arrays en Arduino.

Esta vez presentaremos un tipo de dato muy utilizado al momento de crear los programas en Arduino,
los datos “Arrays”. Veremos qué son los Arrays en Arduino, cómo están estructurados y los usos
que les podemos dar a los mismos.

Para saber los diversos tipos de datos observemos el siguiente listado que podemos manejar al momento de
armar programas en Arduino:

Tabla de los Tipos de Datos usados en Arduino.

Veamos un poco los intervalos de valores de cada uno:

 Los tipos de datos int, byte, unsigned char, char, word, unsigned int, long y unsigned long;
representan números sin parte decimal.
 Los tipos de datos float y double; representan números en punto flotante, es decir, tienen parte
decimal.

Para efecto de este post nos centraremos en los tipos de datos: “Arrays”. Un Array en Arduino, así como en
otros lenguajes de programación, es una colección de variables que se almacenan en posiciones sucesivas,
determinadas por índices numéricos. Son llamados matrices.

Para definirlos se utiliza la siguiente expresión:

tipo_de_elemento nombre_del_array[número_de_elementos_del_array];
Ejemplo:

int MyArray [10]={Valor1,Valor2,Valor3};

El primer índice de un Array es 0, por lo que un Array con 5 elementos, tendrá como posiciones inicial cero
(0) y final cuatro (4), respectivamente. Hay que tener cierto cuidado con esto porque por ejemplo, en una
matriz o Array con 10 elementos, el índice 9 es el último elemento. Por lo tanto:

<span style="color: #cc6600;">int</span> Hitek [10]={9,3,2,4,3,2,7,8,9,11};


1
2
<span style="color: #7e7e7e;">// Hitek [ 9 ] = {9,3,2,4,3,2,7,8,9}; contiene 9</span>
3
4
<span style="color: #7e7e7e;">// Hitek [8] ={9,3,2,4,3,2,7,8,9,11}; es invalido y contiene
5
información aleatoria (de otra dirección de memoria). </span>

Por esta razón hay que tener cuidado en el acceso a las matrices. El acceso más allá del final de una matriz
(usando un número de índice mayor que el tamaño declarado – 1) resultará la lectura de la memoria que está
en uso para otros fines. Escribir en las localidades de memoria aleatoria es definitivamente una mala idea y, a
menudo puede conducir a resultados inesperados como fallos o mal funcionamiento del programa. Esto
también puede ser un error difícil de encontrar. A diferencia de BASIC o JAVA, el compilador de C (en el
que está basado Arduino) no realiza ninguna comprobación para ver si el acceso a una matriz está dentro de
los límites del tamaño de la matriz que ha declarado. Para acceder a las distintas posiciones de un Array se
utilizan los corchetes [ ], incluyendo en su interior el índice que queremos alcanzar. La declaración de un
Array y la manera de iniciarlo lo podemos ver en los siguientes ejemplos:

 Puedes declarar un Array indicando su tamaño.

style="color: #cc6600;">int</span> Hitek[6]

1 <span style="color: #cc6600;">int</span> Hitek[6];

 Se puede declarar una matriz o Array sin establecer un tamaño:

De esta forma nos evitamos indicar el índice porque ya detecta que su tamaño es cinco.

<span style="color: #cc6600;">

1 <span style="color: #cc6600;">int</span> Hitek [ ] = {2, 4, 8, 3, 6};

 Lectura de una posición y asignación de su valor a x


<span style="color: #cc6600;">

1 <span style="color: #cc6600;">int</span> x = Hitek [0];

 Almacenando valores

Hitek [0] = 1;
Hitek [1] = 45;

1 Hitek [0] = 1;
2 Hitek [1] = 45;

 Puedes declararle un tamaño a la matriz e iniciarla al mismo tiempo:

<span style="color: #cc6600;">


<span style="color: #cc6600;">

1 <span style="color: #cc6600;">int</span> Hitek [ 3 ] = {1, 20, 55};


2 <span style="color: #cc6600;">char</span> Hitek [ 6 ] = <span style="color: #006699;">"hola"</span>;

 No podemos declarar un Array sin indicar su tamaño. Provocará un error de compilación

<span style="color: #cc6600;">

1 <span style="color: #cc6600;">int</span> Hitek [ ];

También es posible recurrir a Arrays de más de una dimensión (2,3,…). Veamos el siguiente ejemplo:

estos Arrays multi-dimensionales sólo se pu


mer índice, el resto hay que indicarlos</span
/span> Hitek [][5] = {{1, 2, 3, 4, 5}, {5, 4, 3, 2

1 <span style="color: #7e7e7e;">//Declaramos e iniciamos el Array de dos dimensiones</span>


2 <span style="color: #cc6600;">int</span> Hitek [2][5] = {{1, 2, 3, 4, 5}, {5, 4, 3, 2, 1}};
3 <span style="color: #7e7e7e;">/* Valor del Array de dos dimensiones</span>
4 <span style="color: #7e7e7e;">|---------|</span>
5 <span style="color: #7e7e7e;">|1-2-3-4-5|</span>
6 <span style="color: #7e7e7e;">|5-4-3-2-1|</span>
7 <span style="color: #7e7e7e;">|---------|</span>
8 <span style="color: #7e7e7e;">*/</span>
9 <span style="color: #7e7e7e;">//Podemos asignar valores por separado</span>
10 Hitek [0][2] = 9;
11 Hitek [1][1] = 8;
12 <span style="color: #7e7e7e;">/* Nuevo valor del Array de dos dimensiones</span>
13 <span style="color: #7e7e7e;">|---------|</span>
14 <span style="color: #7e7e7e;">|1-2-9-4-5|</span>
15 <span style="color: #7e7e7e;">|5-8-3-2-1|</span>
16 <span style="color: #7e7e7e;">|---------|</span>
17 <span style="color: #7e7e7e;">*/</span>
18 <span style="color: #7e7e7e;">//En estos Arrays multi-
19 dimensionales sólo se puede omitir la dimensión del</span>
20 <span style="color: #7e7e7e;">//primer índice, el resto hay que indicarlos</span>
<span style="color: #cc6600;">int</span> Hitek [][5] = {{1, 2, 3, 4, 5}, {5, 4, 3, 2, 1}};

“Los datos string no son más que un caso particular de Arrays, dedicados al almacenamiento de caracteres
(char).”

Para ampliar un poco más sobre el uso de Arrays, vamos a mostrar el siguiente ejemplo:

Leds en secuencia, que luego de completar un ciclo irá a la inversa.

Configuración Utilizada:

Configuración Utilizada

Abrimos Arduino IDE y escribimos el siguiente código:

<span style="color: #cc6600;">


<span style="color: #7e7e7e;">
<span style="color: #cc6600;">
<span style="color: #cc6600;">

1 <span style="color: #cc6600;">int</span> Hitek[] = {2, 3, 4, 5, 6, 7}; <span style="color:


2 #7e7e7e;">//le colocamos al Array el nombre de Hitek y establecemos el número de pines(longitud de la
3 matriz)</span>
4 <span style="color:
5 #7e7e7e;">//dejamos Hitek en blanco porque como explicamos anteriormente ya ella sabe que es de 6 nú
6 meros.</span>
7 <span style="color: #cc6600;">int</span> cuenta = 0;<span style="color: #7e7e7e;">//iniciamos la
8 cuenta en 0.</span>
9 <span style="color: #cc6600;">void</span> <span style="color: #cc6600;"><b>setup</b></span>(){
1 <span style="color: #7e7e7e;">// Hacemos todas las declaraciones de una vez</span>
0 <span style="color: #7e7e7e;">//utilizamos for para iniciar cada pin como salida.</span>
1 <span style="color: #7e7e7e;">//establecemos que la cuenta sea menor que el número de
1 pines(longitud de la matriz)
1 </span>
2 <span style="color: #cc6600;">for</span> (cuenta=0;cuenta&lt;6;cuenta++) {
1 <span style="color: #cc6600;">pinMode</span>(Hitek[cuenta], <span style="color:
3 #006699;">OUTPUT</span>);
1 }}
4 <span style="color: #cc6600;">void</span> <span style="color: #cc6600;"><b>loop</b></span>() {
1 <span style="color: #7e7e7e;">//aquí irá del más bajo al más alto.</span>
5 <span style="color: #cc6600;">for</span> (cuenta=0;cuenta&lt;6;cuenta++) {
1 <span style="color: #cc6600;">digitalWrite</span>(Hitek[cuenta], <span style="color:
6 #006699;">HIGH</span>);<span style="color: #7e7e7e;">//encendemos el pin.</span>
1 <span style="color: #cc6600;">delay</span>(100);<span style="color: #7e7e7e;">//le daremos un
7 tiempo de 100 milisegundos.</span>
1 <span style="color: #cc6600;">digitalWrite</span>(Hitek[cuenta], <span style="color:
8 #006699;">LOW</span>);<span style="color: #7e7e7e;">//apagamos el pin.</span>
1 <span style="color: #cc6600;">delay</span>(100);
9 }
2 <span style="color: #7e7e7e;">//aquí irá del más alto al más bajo.</span>
0 <span style="color: #cc6600;">for</span> (cuenta=5;cuenta&gt;=0;cuenta--) {
2 <span style="color: #cc6600;">digitalWrite</span>(Hitek[cuenta], <span style="color:
1 #006699;">HIGH</span>);
2 <span style="color: #cc6600;">delay</span>(100);
2 <span style="color: #cc6600;">digitalWrite</span>(Hitek[cuenta], <span style="color:
2 #006699;">LOW</span>);
3 <span style="color: #cc6600;">delay</span>(100);
2 }
4 }
2
5
2
6
2
7

Si quieres ver otro ejemplo en donde se utilice Tipo de Dato Array, visita el siguiente post:

También podría gustarte