Arrays
A diferencia de las variables (comunes) que solo pueden
almacenar un valor único a la vez, y cada vez que se le asigna un nuevo valor
se le borra el anterior, los arrays son un caso especial de variables que
pueden almacenar un conjunto de valores, y modificar solo uno, o algunos, o
incluso todos los valores contenidos en el mismo en cualquier momento y según nuestra
conveniencia. También sería posible evitar el uso de arrays, y en vez de ello
crear ‘muchas’ variables (comunes) con distintos nombres; pero esto en algunos
casos no resultará cómodo para utilizar.
La traducción de array es literalmente ‘colección’, ya que
se utiliza para ‘juntar’ varios objetos de un mismo tipo. En otras materias,
como matemáticas, se conoce con el nombre de Matriz (y generalmente se usan las
de 2 dimensiones, por su facilidad para representarlas en un plano, ya que
tienen ancho y alto (lo mismo que un plano) y cada elemento de la matriz se
identifica por un par de números que indican la fila y la columna en que se
ubica el elemento. También podría tener la matriz 3 dimensiones (cubo) y en ese
caso cada elemento de la matriz se identificará con 3 valores ordenados (que
indicaran la posición relativa del elemento dentro de la Matriz), x ej:
A(1,8,76) habría que encontrarlo dentro de la matriz A, en la fila 1, columna
8, “nivel” o “capa” 76.
En el caso de Arduino es todavía más simple; ya que utilizaremos un caso de matriz de una sola dimensión (en este caso se llama vector) , aunque es el mismo término que se utiliza en física para representar magnitudes (definida por su módulo (o longitud), su dirección (u orientación) y su sentido (que distingue el origen del extremo)) en el caso de la informática un vector es “una zona de almacenamiento continuo, que contiene una serie de elementos del mismo tipo” y solo sería posible conocer su módulo o longitud, pero no tienen en este caso los vectores dirección (orientación) {Es decir que da igual si se representan de manera horizontal, vertical u oblicua} ni tienen un sentido definido {es decir que da lo mismo recorrerlos de cualquier extremo al otro}
Finalmente (y llevado a la práctica) se podría definir (declarar) en Arduino un array o vector de las siguientes formas:
int myInts[6];
|
//se define que tendrá 6 elementos aunque todavía esta ‘vacía’)
|
int myPins[] = {2, 4, 8, 3,
6};
|
//se define la colección de valores numéricos enteros (la longitud queda implícita)
|
int mySensVals[6] = {2, 4, -8,
3, 2};
|
//igual al anterior, pero con algún entero negativo, y con un tamaño
(longitud) predefinido,
|
char message[6] =
"hola";
|
//en vez de números almacena caracteres individuales (y arma una
palabra!)
|
Los Arrays o vectores son zero indexed,
esto significa que, al referirse a una matriz o vector, el primer elemento de
la matriz está en el índice 0. Por lo tanto:
mySensVals[0] == 2, mySensVals[1] == 4, y sucesivos.
mySensVals[0] == 2, mySensVals[1] == 4, y sucesivos.
Esto también significa que en una
matriz con 10 elementos, el índice 9 es el último elemento. Por lo tanto:
int
myArray[10]={9,3,2,4,3,2,7,8,9,11};
// myArray[9] contiene 11
// myArray[10] es invalido y
contiene información aleatoria (de otra dirección de memoria)
Para mayor
información y ejemplos ver la fuente: http://arduino.cc/es/Reference/Array
Consigna
1. Escribir un programa en Arduino que genere 60 números aleatorios en un minuto y los almacene en un vector. Al finalizar la generación de números, deberá mostrar la lista de números generados en el Monitor Serial.2. Construir un dado virtual con 7 leds y un pulsador, para que al presionar el pulsador se genere una secuencia aleatoria para ‘lanzar el dado’ y a continuación quede fijo el número aleatorio que corresponda al dado. Ejemplo en youtube: ‘Arduino led dice’ by Eddie Maas http://www.youtube.com/watch?v=bVJLSnqbyEc
Antecedentes:
Analizar los programas de ejemplos: Button (http://arduino.cc/es/Tutorial/Button)
Blink (http://arduino.cc/es/Tutorial/Blink)
, Bucle For (http://arduino.cc/es/Tutorial/ForLoop)
y la Referncia del lenguaje http://arduino.cc/es/Reference/For
Punto Extra: Modificar el dado (y el programa) , para que en vez de usar
7 salidas digitales para los leds, mantenga el mismo funcionamiento pero con
solo 4 salidas digitales.