testing gyro get orientation,acceleration states get difference in two states of the device

Dependencies:   mbed

Fork of testing_gyro by Dimitar Borisov

Committer:
dborisov
Date:
Wed Mar 25 13:31:01 2015 +0000
Revision:
4:e89d74a1d9f5
Parent:
0:91b1274ec397
//testing; added functions for average value for orientation and acceleration; added function for calculating difference in two states of orientation and acceleration

Who changed what in which revision?

UserRevisionLine numberNew contents of line
liamg 0:91b1274ec397 1 // Defines for the MEMS sensors on the STEVAL-MKI124V1 board
liamg 0:91b1274ec397 2 // Liam Goudge. March 2014
liamg 0:91b1274ec397 3
liamg 0:91b1274ec397 4 // LPS331AP MEMS pressure and temperature sensor
liamg 0:91b1274ec397 5 #define LPS331addr 0xBA // I2C address of the sensor for writes (line SAO is tied high on this board so bit 1=1. Note this may not work on other boards).
liamg 0:91b1274ec397 6
liamg 0:91b1274ec397 7 #define pWHO_AM_I 0x0F // "ping" register. Device will respond even when in sleep mode
liamg 0:91b1274ec397 8 #define pRES_CONF 0x10 // Reset value is 0x7A (512 pressure samples and 128 temperature samples)
liamg 0:91b1274ec397 9 #define pCTRL_REG1 0x20
liamg 0:91b1274ec397 10 #define pCTRL_REG2 0x21
liamg 0:91b1274ec397 11 #define pCTRL_REG3 0x22
liamg 0:91b1274ec397 12 #define pPRESS_OUT_XL 0x28
liamg 0:91b1274ec397 13 #define pPRESS_OUT_L 0x29
liamg 0:91b1274ec397 14 #define pPRESS_OUT_H 0x2A
liamg 0:91b1274ec397 15 #define pTEMP_OUT_L 0x2B // Temperature data. 2's complement. Device will respond when in sleep mode
liamg 0:91b1274ec397 16 #define pTEMP_OUT_H 0x2C
liamg 0:91b1274ec397 17
liamg 0:91b1274ec397 18 // LSM303DLHC MEMS ascceleratometer, magnetometer and temperature sensor
liamg 0:91b1274ec397 19 #define LSM303_m 0x3C // I2C base address of the magnetometer sensor
liamg 0:91b1274ec397 20 #define LSM303_a 0x32 // I2C base address of the accelerometer sensor
liamg 0:91b1274ec397 21
liamg 0:91b1274ec397 22 // Magnetometer registers
liamg 0:91b1274ec397 23 #define mCRA_REG_M 0x00 // Magnetic sensor configuration register A
liamg 0:91b1274ec397 24 #define mCRB_REG_M 0x01 // Magnetic sensor configuration register B
liamg 0:91b1274ec397 25 #define mMR_REG_M 0x02 // Magnetometer mode register
liamg 0:91b1274ec397 26 #define mOUT_X_H_M 0x03 // X-axis magnetic field data High byte
liamg 0:91b1274ec397 27 #define mOUT_X_L_M 0x04 // X-axis magnetic field data Low byte
liamg 0:91b1274ec397 28 #define mOUT_Z_H_M 0x05 // Z-axis magnetic field data High byte
liamg 0:91b1274ec397 29 #define mOUT_Z_L_M 0x06 // Z-axis magnetic field data Low byte
liamg 0:91b1274ec397 30 #define mOUT_Y_H_M 0x07 // Y-axis magnetic field data High byte
liamg 0:91b1274ec397 31 #define mOUT_Y_L_M 0x08 // Y-axis magnetic field data Low byte
liamg 0:91b1274ec397 32 #define mSR_REG_M 0x09 // Magnetometer status register
liamg 0:91b1274ec397 33 #define mIRA_REG_M 0x0A // ID register A. Should read 0x48
liamg 0:91b1274ec397 34 #define mCTRL_REG1_A 0x20
liamg 0:91b1274ec397 35 #define mTEMP_OUT_H_M 0x31 // Magnetometer temperature register High byte
liamg 0:91b1274ec397 36 #define mTEMP_OUT_L_M 0x32 // Magnetometer temperature register Low byte
liamg 0:91b1274ec397 37
liamg 0:91b1274ec397 38 // Accelerometer registers
liamg 0:91b1274ec397 39 #define aCTRL_REG1_A 0x20 // Accelerometer output data rate ODR, low power modes etc
liamg 0:91b1274ec397 40 #define aCTRL_REG4_A 0x23 // Accelerometer full scale selection etc
liamg 0:91b1274ec397 41 #define aOUT_X_L_A 0x28 // Accelerometer X axis low byte
liamg 0:91b1274ec397 42 #define aOUT_X_H_A 0x29 // Accelerometer X axis high byte
liamg 0:91b1274ec397 43 #define aOUT_Y_L_A 0x2A // Accelerometer Y axis low byte
liamg 0:91b1274ec397 44 #define aOUT_Y_H_A 0x2B // Accelerometer Y axis high byte
liamg 0:91b1274ec397 45 #define aOUT_Z_L_A 0x2C // Accelerometer Z axis low byte
liamg 0:91b1274ec397 46 #define aOUT_Z_H_A 0x2D // Accelerometer Z axis high byte
liamg 0:91b1274ec397 47
liamg 0:91b1274ec397 48 // L3GD20 MEMS gyro. 3 axis angular rate sensor
liamg 0:91b1274ec397 49 #define L3GD20_ADDR 0xD6 // I2C base address of the gyro
liamg 0:91b1274ec397 50
liamg 0:91b1274ec397 51 #define gWHO_AM_I 0x0F // Ping register. Response is 0xD4. Responds even when device is off
liamg 0:91b1274ec397 52 #define gCTRL_REG1 0x20 // Sets Output Data Rate, Bandwidth and Power mode
liamg 0:91b1274ec397 53 #define gCTRL_REG4 0x23 //
liamg 0:91b1274ec397 54 #define gOUT_TEMP 0x26 // Temperature data. 8 bit resolution
liamg 0:91b1274ec397 55 #define gOUT_X_L 0x28 // X-axis angular rate low byte expressed as 2's complement
liamg 0:91b1274ec397 56 #define gOUT_X_H 0x29 // X-axis angular rate high byte
liamg 0:91b1274ec397 57 #define gOUT_Y_L 0x2A
liamg 0:91b1274ec397 58 #define gOUT_Y_H 0x2B
liamg 0:91b1274ec397 59 #define gOUT_Z_L 0x2C
liamg 0:91b1274ec397 60 #define gOUT_Z_H 0x2D
liamg 0:91b1274ec397 61
liamg 0:91b1274ec397 62
liamg 0:91b1274ec397 63 // Structs
liamg 0:91b1274ec397 64 typedef struct{
liamg 0:91b1274ec397 65 float pitch;
liamg 0:91b1274ec397 66 float roll;
dborisov 4:e89d74a1d9f5 67 int16_t aX;
dborisov 4:e89d74a1d9f5 68 int16_t aY;
dborisov 4:e89d74a1d9f5 69 int16_t aZ;
liamg 0:91b1274ec397 70 float heading;
liamg 0:91b1274ec397 71 float tempC;
liamg 0:91b1274ec397 72 float pressuremB;
liamg 0:91b1274ec397 73 } SensorState_t;
liamg 0:91b1274ec397 74
liamg 0:91b1274ec397 75
liamg 0:91b1274ec397 76
dborisov 4:e89d74a1d9f5 77 typedef struct{
dborisov 4:e89d74a1d9f5 78 float x;
dborisov 4:e89d74a1d9f5 79 float y;
dborisov 4:e89d74a1d9f5 80 float z;
dborisov 4:e89d74a1d9f5 81 int16_t aX;
dborisov 4:e89d74a1d9f5 82 int16_t aY;
dborisov 4:e89d74a1d9f5 83 int16_t aZ;
dborisov 4:e89d74a1d9f5 84 }Result_avrg;