sensor UV VEML6070, y magnetometro GY 273

Dependents:   OBC3_1_h

Committer:
FannyCalle
Date:
Mon May 21 15:11:20 2018 +0000
Revision:
0:46f5737fe936
Child:
1:f6f0d3ae86c9
falta acabar;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
FannyCalle 0:46f5737fe936 1 # include "SENSOR.h"
FannyCalle 0:46f5737fe936 2 # include "mbed.h"
FannyCalle 0:46f5737fe936 3 SENSOR::SENSOR(PinName sda, PinName scl): i2c(sda, scl)
FannyCalle 0:46f5737fe936 4 { i2c.frequency(100000); // configuracion de la velocidad del i2c para modo standart para los casos de uv y magnetometro
FannyCalle 0:46f5737fe936 5 // para fast mode utilizar la freuencia de 400000 Hz, esto esta especificado en los datasheetZ de uv y magnetometro
FannyCalle 0:46f5737fe936 6
FannyCalle 0:46f5737fe936 7 inicial();
FannyCalle 0:46f5737fe936 8 }
FannyCalle 0:46f5737fe936 9 void SENSOR::inicial()
FannyCalle 0:46f5737fe936 10 {
FannyCalle 0:46f5737fe936 11 //******************************************************************************************************
FannyCalle 0:46f5737fe936 12 //INICIALIZACION DE UV, RESET AL ACK Y CONFIGURACION DEL MODO DE USO.
FannyCalle 0:46f5737fe936 13 //******************************************************************************************************
FannyCalle 0:46f5737fe936 14 int address;
FannyCalle 0:46f5737fe936 15 i2c.read(UV_ADDR_ARA,cmd,1);
FannyCalle 0:46f5737fe936 16 //printf("GGGG%dHHH",cmd);
FannyCalle 0:46f5737fe936 17 cmd[0]=0x06; //reserva=00, ack=0, ackthr=0, tiempo de integracion=01,reserva=1, shhutdown=0 ==00000110=0x6h
FannyCalle 0:46f5737fe936 18 i2c.write(UV_ADDR_MO,cmd,1,false);
FannyCalle 0:46f5737fe936 19 wait_ms(200);
FannyCalle 0:46f5737fe936 20 // configuracion del magnetometro
FannyCalle 0:46f5737fe936 21 //cmd[0]=mag_IDENT_A;
FannyCalle 0:46f5737fe936 22
FannyCalle 0:46f5737fe936 23 cmd[0]=Read(mag_IDENT_A);
FannyCalle 0:46f5737fe936 24 printf("...%d...",cmd[0]);
FannyCalle 0:46f5737fe936 25 int iden=cmd[0];
FannyCalle 0:46f5737fe936 26 if(iden != 0x48){
FannyCalle 0:46f5737fe936 27 printf("magnetometro no identificado %d\n",iden);
FannyCalle 0:46f5737fe936 28 }
FannyCalle 0:46f5737fe936 29 // else{
FannyCalle 0:46f5737fe936 30 //configuracion de registro A( velocidad de datos y medicion)
FannyCalle 0:46f5737fe936 31 Write(mag_CRA,0x70);
FannyCalle 0:46f5737fe936 32 //configuracion del registro B(ganancia del sensor)
FannyCalle 0:46f5737fe936 33 Write(mag_CRB,0x20);
FannyCalle 0:46f5737fe936 34 // configuracion del modo de funcionamiento
FannyCalle 0:46f5737fe936 35 Write(mag_MR,0x00);
FannyCalle 0:46f5737fe936 36 printf("magnetometro listo\n");
FannyCalle 0:46f5737fe936 37 // }
FannyCalle 0:46f5737fe936 38 //******************************************************************************************************
FannyCalle 0:46f5737fe936 39 }
FannyCalle 0:46f5737fe936 40 uint16_t SENSOR::getUV()
FannyCalle 0:46f5737fe936 41 {
FannyCalle 0:46f5737fe936 42 uint16_t uvi;
FannyCalle 0:46f5737fe936 43 i2c.read(UV_ADDR_H, cmd,1);
FannyCalle 0:46f5737fe936 44 uvi = cmd[0]<<8;
FannyCalle 0:46f5737fe936 45 //printf(".....%d:::::",uvi);
FannyCalle 0:46f5737fe936 46 i2c.read(UV_ADDR_L, cmd,1,false);
FannyCalle 0:46f5737fe936 47 // printf("&&%d....",cmd);
FannyCalle 0:46f5737fe936 48 uvi |= cmd[0];
FannyCalle 0:46f5737fe936 49 return uvi;
FannyCalle 0:46f5737fe936 50 }
FannyCalle 0:46f5737fe936 51 char SENSOR::Read(char data)
FannyCalle 0:46f5737fe936 52 {
FannyCalle 0:46f5737fe936 53 char tx = data;
FannyCalle 0:46f5737fe936 54 char rx;
FannyCalle 0:46f5737fe936 55
FannyCalle 0:46f5737fe936 56 i2c.write(mag_I2C_W, &tx, 1);
FannyCalle 0:46f5737fe936 57 i2c.read(mag_I2C_R, &rx, 1);
FannyCalle 0:46f5737fe936 58 return rx;
FannyCalle 0:46f5737fe936 59 }
FannyCalle 0:46f5737fe936 60 void SENSOR::Write(char reg_address, char data)
FannyCalle 0:46f5737fe936 61 {
FannyCalle 0:46f5737fe936 62 char tx[2];
FannyCalle 0:46f5737fe936 63 tx[0]=reg_address;
FannyCalle 0:46f5737fe936 64 tx[1]=data;
FannyCalle 0:46f5737fe936 65
FannyCalle 0:46f5737fe936 66 i2c.write(mag_I2C_W,tx,2);
FannyCalle 0:46f5737fe936 67 }
FannyCalle 0:46f5737fe936 68 //MAGNETOMETRO EN TRES EJES
FannyCalle 0:46f5737fe936 69 uint16_t SENSOR::getMx()
FannyCalle 0:46f5737fe936 70 {
FannyCalle 0:46f5737fe936 71 uint16_t magx;
FannyCalle 0:46f5737fe936 72 //cmd[0]=mag_DXRA;
FannyCalle 0:46f5737fe936 73 cmd[0]=Read(mag_DXRA);
FannyCalle 0:46f5737fe936 74 magx=cmd[0]<<8;
FannyCalle 0:46f5737fe936 75 cmd[0]=Read(mag_DXRB);
FannyCalle 0:46f5737fe936 76 magx |=cmd[0];
FannyCalle 0:46f5737fe936 77 return magx;
FannyCalle 0:46f5737fe936 78 }
FannyCalle 0:46f5737fe936 79 uint16_t SENSOR::getMy()
FannyCalle 0:46f5737fe936 80 {
FannyCalle 0:46f5737fe936 81 uint16_t magy;
FannyCalle 0:46f5737fe936 82 cmd[0]= Read(mag_DYRA);
FannyCalle 0:46f5737fe936 83 magy=cmd[0]<<8;
FannyCalle 0:46f5737fe936 84 cmd[0]= Read(mag_DYRB);
FannyCalle 0:46f5737fe936 85 magy |=cmd[0];
FannyCalle 0:46f5737fe936 86 return magy;
FannyCalle 0:46f5737fe936 87 }
FannyCalle 0:46f5737fe936 88 uint16_t SENSOR::getMz()
FannyCalle 0:46f5737fe936 89 {
FannyCalle 0:46f5737fe936 90 uint16_t magz;
FannyCalle 0:46f5737fe936 91 cmd[0]=Read(mag_DZRA);
FannyCalle 0:46f5737fe936 92 magz=cmd[0]<<8;
FannyCalle 0:46f5737fe936 93 cmd[0]=Read(mag_DZRB);
FannyCalle 0:46f5737fe936 94 magz |=cmd[0];
FannyCalle 0:46f5737fe936 95 return magz;
FannyCalle 0:46f5737fe936 96 }