sensor UV VEML6070, y magnetometro GY 273

Dependents:   OBC3_1_h

Committer:
FannyCalle
Date:
Tue Jun 26 15:12:33 2018 +0000
Revision:
2:d8487cc76ee2
Parent:
1:f6f0d3ae86c9
areglada la trama ; falta magne;

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 2:d8487cc76ee2 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 1:f6f0d3ae86c9 38
FannyCalle 2:d8487cc76ee2 39
FannyCalle 0:46f5737fe936 40 //******************************************************************************************************
FannyCalle 0:46f5737fe936 41 }
FannyCalle 0:46f5737fe936 42 uint16_t SENSOR::getUV()
FannyCalle 0:46f5737fe936 43 {
FannyCalle 0:46f5737fe936 44 uint16_t uvi;
FannyCalle 0:46f5737fe936 45 i2c.read(UV_ADDR_H, cmd,1);
FannyCalle 0:46f5737fe936 46 uvi = cmd[0]<<8;
FannyCalle 0:46f5737fe936 47 //printf(".....%d:::::",uvi);
FannyCalle 0:46f5737fe936 48 i2c.read(UV_ADDR_L, cmd,1,false);
FannyCalle 0:46f5737fe936 49 // printf("&&%d....",cmd);
FannyCalle 0:46f5737fe936 50 uvi |= cmd[0];
FannyCalle 0:46f5737fe936 51 return uvi;
FannyCalle 0:46f5737fe936 52 }
FannyCalle 1:f6f0d3ae86c9 53
FannyCalle 2:d8487cc76ee2 54
FannyCalle 0:46f5737fe936 55 char SENSOR::Read(char data)
FannyCalle 0:46f5737fe936 56 {
FannyCalle 0:46f5737fe936 57 char tx = data;
FannyCalle 0:46f5737fe936 58 char rx;
FannyCalle 0:46f5737fe936 59
FannyCalle 0:46f5737fe936 60 i2c.write(mag_I2C_W, &tx, 1);
FannyCalle 0:46f5737fe936 61 i2c.read(mag_I2C_R, &rx, 1);
FannyCalle 0:46f5737fe936 62 return rx;
FannyCalle 0:46f5737fe936 63 }
FannyCalle 0:46f5737fe936 64 void SENSOR::Write(char reg_address, char data)
FannyCalle 0:46f5737fe936 65 {
FannyCalle 0:46f5737fe936 66 char tx[2];
FannyCalle 0:46f5737fe936 67 tx[0]=reg_address;
FannyCalle 0:46f5737fe936 68 tx[1]=data;
FannyCalle 0:46f5737fe936 69
FannyCalle 0:46f5737fe936 70 i2c.write(mag_I2C_W,tx,2);
FannyCalle 0:46f5737fe936 71 }
FannyCalle 0:46f5737fe936 72 //MAGNETOMETRO EN TRES EJES
FannyCalle 0:46f5737fe936 73 uint16_t SENSOR::getMx()
FannyCalle 0:46f5737fe936 74 {
FannyCalle 0:46f5737fe936 75 uint16_t magx;
FannyCalle 0:46f5737fe936 76 //cmd[0]=mag_DXRA;
FannyCalle 0:46f5737fe936 77 cmd[0]=Read(mag_DXRA);
FannyCalle 0:46f5737fe936 78 magx=cmd[0]<<8;
FannyCalle 0:46f5737fe936 79 cmd[0]=Read(mag_DXRB);
FannyCalle 0:46f5737fe936 80 magx |=cmd[0];
FannyCalle 0:46f5737fe936 81 return magx;
FannyCalle 0:46f5737fe936 82 }
FannyCalle 0:46f5737fe936 83 uint16_t SENSOR::getMy()
FannyCalle 0:46f5737fe936 84 {
FannyCalle 0:46f5737fe936 85 uint16_t magy;
FannyCalle 0:46f5737fe936 86 cmd[0]= Read(mag_DYRA);
FannyCalle 0:46f5737fe936 87 magy=cmd[0]<<8;
FannyCalle 0:46f5737fe936 88 cmd[0]= Read(mag_DYRB);
FannyCalle 0:46f5737fe936 89 magy |=cmd[0];
FannyCalle 0:46f5737fe936 90 return magy;
FannyCalle 0:46f5737fe936 91 }
FannyCalle 0:46f5737fe936 92 uint16_t SENSOR::getMz()
FannyCalle 0:46f5737fe936 93 {
FannyCalle 0:46f5737fe936 94 uint16_t magz;
FannyCalle 0:46f5737fe936 95 cmd[0]=Read(mag_DZRA);
FannyCalle 0:46f5737fe936 96 magz=cmd[0]<<8;
FannyCalle 0:46f5737fe936 97 cmd[0]=Read(mag_DZRB);
FannyCalle 0:46f5737fe936 98 magz |=cmd[0];
FannyCalle 0:46f5737fe936 99 return magz;
FannyCalle 1:f6f0d3ae86c9 100 }