Vectores y Matrices
Vectores y Matrices
Vectores y Matrices
ARRAYS
El índice nos indica en que casilla o POSICION ESTA EL VALOR QUE INGRESAMOS o DATO…. Es
decir que el valor 6 en nuestro ejemplo estaría en la posición cero (0) o primer casilla….
Los datos que podemos ingresar en cada casillero dentro de un array puede ser cualquiera de
los datos que maneja arduino, por ejemplo integer, float, etc…
Es importante tener en cuenta que la cantidad de casillas es una cosa y el número de casilla o
índice de esa casilla es otro…..
Pero como la casilla con INDICE cero (0) es una casilla, vamos a tener que contamos con 7
casillas o mejor dicho: TENEMOS UN ARRAY DE 7 CASILLEROS…
indice tiempo
[0] 6
[1] 2
[2] 8
[3] 5
[4] 1
… …
[6] …
Por ejemplo podemos hacer que un led titile la cantidad de veces que se especifica en el
ARRAY, primero lo vamos a hacer sin array y seria asi:
#define led 9
void setup() {
pinMode(led,OUTPUT);
1
}
void loop() { }
Este ejemplo nos muestra un led encendiendo con una demora que está a lo último que es de
5000 milisegundos, 3000 milisegundos, 4000 milisegundos y así sucesivamente…
#define led 9
void setup() {
pinMode(led,OUTPUT);
digitalWrite(led,1);delay(100);digitalWrite(led,0);
void loop() {
R[]={1,1,0,0}
A[]={0,1,01}
V[]={0,0,1,1}
2
T[]={5,1,3,1}
En los 3 primeros arrays tengo los valores que van a tener los leds de acuerdo a su color en el
semasforo (mirar el diagrama de la foto que tome), y el ultimo array es el tiempo que dura
cada color encendido o cada secuencia
La codificación es la siguiente:
#define ledr 10
#define leda 11
#define ledv 12
int r[]={1,1,0,0};
int a[]={0,0,0,1};
int v[]={0,0,1,1};
int t[]={5,1,3,1};
void setup() {
pinMode(ledr,OUTPUT);pinMode(leda,OUTPUT);pinMode(ledv,OUTPUT);
void loop() {
digitalWrite(ledr, r[i]);
digitalWrite(leda, a[i]);
digitalWrite(ledv, v[i]);
delay(t[i]*1000);
3
}
Los vectores son los arrays de 1 dimension, la matriz por el contrario, es de 2 dimensiones
VECTOR
MATRIZ
Esto es la cantidad total de bytes de todo el array y lo divido por la cant de bytes de la primera
posición y ahí me va a tirar la cantidad de elementos….
Como ejemplo: si cada celda del array tiene 1023 bytes por decir cualquier valor….y tenemos
20 celdas, entonces tendremos que:
Es decir que si ese número lo dividimos por la cantidad de bytes de cualquier celda, en este
caso por la primera…. Nos va a dar 20, que son la cantidad lugares que tiene el array….
En el mismo tenemos que tener en claro que la secuencia de encendido y apagado de cada
color se superopne, en el caso del amarillo con el verde y el amarillo con el rojo….podemos
verlo en el siguiente grafico…
4
en el grafico podemos ver qué color tiene que estar encendido o high…y que color debe estar
low o apagado de acuerdo a la secuencia de un semáforo
#define ledr 10
#define leda 11
#define ledv 12
int r[]={1,1,0,0,0};
int a[]={0,0,0,1,};
int v[]={0,0,1,1,};
int t[]={5,1,3,1,};
pinMode(ledr,OUTPUT);pinMode(leda,OUTPUT);pinMode(ledv,OUTPUT);
void loop() {
5
for( int i=0 ; i< sizeof(r)/sizeof(r[0]) ; i++) {
Serial.println(t[i]);
digitalWrite(ledr, r[i]);
digitalWrite(leda, a[i]);
digitalWrite(ledv, v[i]);
delay(t[i]*1000);
----------------
EEPROM
La llibreria es #include <EEPROM.h> esto me permite trabajar con la memoria y se pone fuera
del setup..
Tiene varias instrucciones, entre ellas hay una que es como un array es de 0 a 1023 es decir
1024 byte o 1 K
0 120
1
2
3
…
1023
6
Luego de apagar la placa arduino y por medio de código hago una lectura podremos traer el
valor que pusimos anteriormente con la sintaxis anterior:
Ejemplo:
#include <EEPROM.h>
Inta a=EEPROM.READ(0);
Serial.println(a);
-----------
Vamos a hacer un programita en el cual un led rgb tenga un determinado color de acuerdo un
pulsador que utilizamos para cambiar el color, luego cuando un color me guste, con otro
pulsador lo grabo en la memoria eprom asi de esa manera al apagarla la placa, me queda
guardado el color que quería….. en la memoria EEPROM del Arduino
7
#include <EEPROM.h>
#define ledr 6
#define ledv 3
#define leda 5
#define seleccion 2
#define memoria 17
//EEPROM.write(0,4);
pinMode(ledr,1);pinMode(ledv,1);
pinMode(leda,1);
pinMode(seleccion,INPUT_PULLUP);
pinMode(memoria,INPUT_PULLUP);
void loop() {
int a=EEPROM.read(0);
if(a==1){digitalWrite(ledr,255);digitalWrite(ledv,255);digitalWrite(leda,255);}
if(a==4){digitalWrite(ledr,255);digitalWrite(ledv, 0);digitalWrite(leda,255);}
leer_puls_seleccion();
8
//leer_puls_memoria();
void leer_puls_seleccion() {
if(digitalRead(seleccion)==0) {delay(20);while(digitalRead(seleccion)==0){}
delay(20);
int indice=EEPROM.read(0);
indice++;
EEPROM.write(0,indice);
Acá no estamos contemplando el botón de memoria…. Como tarea tenemos que grabar con el
pulsador memoria en vez de grabarse directamente cada vez que pulsamos el botón
selección…
--------------------
9
este transistor LM35 entrega 10mV / °C – para medir temperaturas negativas está el DS18B20
Las entradas analógicas debemos prepararlas para que en vez de medir de 0-5v lo convertimos
a que sea de 0 a 1,1volt para que la medición no sea tan baja lo hacemos con analogreference
que es una instrucción para tal fin…
void setup() {
Void loop() {
10