Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Vectores y Matrices

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 10

VECTORES Y MATRICES….

ARRAYS

ARRAYS: Es una colección de datos y se ordenan por medio de un índice.

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 dentro de un mismo array no se pueden combinar


diferentes tipos de datos, es decir que si defino un array como float, no podrá poner otro valor
que no sea float…

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…..

Índice de cero (0) a seis (6)….. cant de casillas 7…. 0, 1, 2, 3, 4, 5, 6

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);

digitalWrite(led,1);delay(100); digitalWrite(led,0); delay(5000);

digitalWrite(led,1);delay(100); digitalWrite(led,0); delay(3000);

digitalWrite(led,1);delay(100); digitalWrite(led,0); delay(4000);

digitalWrite(led,1);delay(100); digitalWrite(led,0); delay(2000);

digitalWrite(led,1);delay(100); digitalWrite(led,0); delay(9000);

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…

con array esto se hace de la siguiente manera:

int tiempo[] = {5,3,4,2,9};

#define led 9

void setup() {

pinMode(led,OUTPUT);

for ( int i=0;i<5;i++ ) {

digitalWrite(led,1);delay(100);digitalWrite(led,0);

delay( tiempo[i] * 1000 );

void loop() {

Se hace lo mismo pero la lectura de los delay se hace desde un array

Para hacer un semasforo se hace de la siguiente manera:

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

Defino los led….

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() {

for( int i=0;i<4;i++) {

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

Para saber la cantidad de elementos que tengo en un array se hace así:

Sizeof (r[])/sizeof (r[0]):

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:

el array completo tiene= sizeof que seria 1023 x 20 = 20.460 bytes….

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….

Vamos a hacer un semasforo…..

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,};

void setup() {Serial.begin(9600);

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

La instrucción para escribir en la memoria eeprom es: EEPROM.write(0,120);

En la posición 0 está el valor 120.

Nota: en cada posición de memoria se puede escribir un byte

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>

Void setup() {Serial.begin (9600)

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

void setup() {Serial.begin(9600);

//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==2){digitalWrite(ledr,255);digitalWrite(ledv, 0);digitalWrite(leda, 0);}

if(a==3){digitalWrite(ledr,255);digitalWrite(ledv, 15);digitalWrite(leda, 0);}

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++;

if ( indice >4) {indice=1;}

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…

--------------------

sensor de temperatura (ver la del celu)

9
este transistor LM35 entrega 10mV / °C – para medir temperaturas negativas está el DS18B20

vamos a ver un ejemplo:

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…

En otras palabras las variaciones de temperatura en el LM35 se traducen en variaciones de


voltaje, por lo que lo que sensa temperatura y nos devuelve voltaje, para que esa lectura sea
posible ser utilizada, en vez de hacer variaciones en base a 5v se setea para que sea cada 1,1
volt….

void setup() {

analogreference(INTERNAL); // pongo la referencia del conversor analógico digital en


//1,1 volt

Void loop() {

10

También podría gustarte