sensor UV VEML6070, y magnetometro GY 273
SENSOR.cpp@0:46f5737fe936, 2018-05-21 (annotated)
- 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?
User | Revision | Line number | New 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 | } |