Programme complet de bâton de marche sauf capteur cardiaque

Dependencies:   mbed SimpleBLE X_NUCLEO_IDB0XA1 SDFileSystem MBed_Adafruit-GPS-Library Arduino USBDevice

Committer:
zmoutaou
Date:
Mon Jan 27 12:04:30 2020 +0000
Revision:
0:6e330c197193
BMC

Who changed what in which revision?

UserRevisionLine numberNew contents of line
zmoutaou 0:6e330c197193 1 // Accelerometer and Gyroscope registers
zmoutaou 0:6e330c197193 2 #define LSM9DS1XG_ACT_THS 0x04
zmoutaou 0:6e330c197193 3 #define LSM9DS1XG_ACT_DUR 0x05
zmoutaou 0:6e330c197193 4 #define LSM9DS1XG_INT_GEN_CFG_XL 0x06
zmoutaou 0:6e330c197193 5 #define LSM9DS1XG_INT_GEN_THS_X_XL 0x07
zmoutaou 0:6e330c197193 6 #define LSM9DS1XG_INT_GEN_THS_Y_XL 0x08
zmoutaou 0:6e330c197193 7 #define LSM9DS1XG_INT_GEN_THS_Z_XL 0x09
zmoutaou 0:6e330c197193 8 #define LSM9DS1XG_INT_GEN_DUR_XL 0x0A
zmoutaou 0:6e330c197193 9 #define LSM9DS1XG_REFERENCE_G 0x0B
zmoutaou 0:6e330c197193 10 #define LSM9DS1XG_INT1_CTRL 0x0C
zmoutaou 0:6e330c197193 11 #define LSM9DS1XG_INT2_CTRL 0x0D
zmoutaou 0:6e330c197193 12 #define LSM9DS1XG_WHO_AM_I 0x0F // should return 0x68
zmoutaou 0:6e330c197193 13 #define LSM9DS1XG_CTRL_REG1_G 0x10
zmoutaou 0:6e330c197193 14 #define LSM9DS1XG_CTRL_REG2_G 0x11
zmoutaou 0:6e330c197193 15 #define LSM9DS1XG_CTRL_REG3_G 0x12
zmoutaou 0:6e330c197193 16 #define LSM9DS1XG_ORIENT_CFG_G 0x13
zmoutaou 0:6e330c197193 17 #define LSM9DS1XG_INT_GEN_SRC_G 0x14
zmoutaou 0:6e330c197193 18 #define LSM9DS1XG_OUT_TEMP_L 0x15
zmoutaou 0:6e330c197193 19 #define LSM9DS1XG_OUT_TEMP_H 0x16
zmoutaou 0:6e330c197193 20 #define LSM9DS1XG_STATUS_REG 0x17
zmoutaou 0:6e330c197193 21 #define LSM9DS1XG_OUT_X_L_G 0x18
zmoutaou 0:6e330c197193 22 #define LSM9DS1XG_OUT_X_H_G 0x19
zmoutaou 0:6e330c197193 23 #define LSM9DS1XG_OUT_Y_L_G 0x1A
zmoutaou 0:6e330c197193 24 #define LSM9DS1XG_OUT_Y_H_G 0x1B
zmoutaou 0:6e330c197193 25 #define LSM9DS1XG_OUT_Z_L_G 0x1C
zmoutaou 0:6e330c197193 26 #define LSM9DS1XG_OUT_Z_H_G 0x1D
zmoutaou 0:6e330c197193 27 #define LSM9DS1XG_CTRL_REG4 0x1E
zmoutaou 0:6e330c197193 28 #define LSM9DS1XG_CTRL_REG5_XL 0x1F
zmoutaou 0:6e330c197193 29 #define LSM9DS1XG_CTRL_REG6_XL 0x20
zmoutaou 0:6e330c197193 30 #define LSM9DS1XG_CTRL_REG7_XL 0x21
zmoutaou 0:6e330c197193 31 #define LSM9DS1XG_CTRL_REG8 0x22
zmoutaou 0:6e330c197193 32 #define LSM9DS1XG_CTRL_REG9 0x23
zmoutaou 0:6e330c197193 33 #define LSM9DS1XG_CTRL_REG10 0x24
zmoutaou 0:6e330c197193 34 #define LSM9DS1XG_INT_GEN_SRC_XL 0x26
zmoutaou 0:6e330c197193 35 //#define LSM9DS1XG_STATUS_REG 0x27 // duplicate of 0x17!
zmoutaou 0:6e330c197193 36 #define LSM9DS1XG_OUT_X_L_XL 0x28
zmoutaou 0:6e330c197193 37 #define LSM9DS1XG_OUT_X_H_XL 0x29
zmoutaou 0:6e330c197193 38 #define LSM9DS1XG_OUT_Y_L_XL 0x2A
zmoutaou 0:6e330c197193 39 #define LSM9DS1XG_OUT_Y_H_XL 0x2B
zmoutaou 0:6e330c197193 40 #define LSM9DS1XG_OUT_Z_L_XL 0x2C
zmoutaou 0:6e330c197193 41 #define LSM9DS1XG_OUT_Z_H_XL 0x2D
zmoutaou 0:6e330c197193 42 #define LSM9DS1XG_FIFO_CTRL 0x2E
zmoutaou 0:6e330c197193 43 #define LSM9DS1XG_FIFO_SRC 0x2F
zmoutaou 0:6e330c197193 44 #define LSM9DS1XG_INT_GEN_CFG_G 0x30
zmoutaou 0:6e330c197193 45 #define LSM9DS1XG_INT_GEN_THS_XH_G 0x31
zmoutaou 0:6e330c197193 46 #define LSM9DS1XG_INT_GEN_THS_XL_G 0x32
zmoutaou 0:6e330c197193 47 #define LSM9DS1XG_INT_GEN_THS_YH_G 0x33
zmoutaou 0:6e330c197193 48 #define LSM9DS1XG_INT_GEN_THS_YL_G 0x34
zmoutaou 0:6e330c197193 49 #define LSM9DS1XG_INT_GEN_THS_ZH_G 0x35
zmoutaou 0:6e330c197193 50 #define LSM9DS1XG_INT_GEN_THS_ZL_G 0x36
zmoutaou 0:6e330c197193 51 #define LSM9DS1XG_INT_GEN_DUR_G 0x37
zmoutaou 0:6e330c197193 52 //
zmoutaou 0:6e330c197193 53 // Magnetometer registers
zmoutaou 0:6e330c197193 54 #define LSM9DS1M_OFFSET_X_REG_L_M 0x05
zmoutaou 0:6e330c197193 55 #define LSM9DS1M_OFFSET_X_REG_H_M 0x06
zmoutaou 0:6e330c197193 56 #define LSM9DS1M_OFFSET_Y_REG_L_M 0x07
zmoutaou 0:6e330c197193 57 #define LSM9DS1M_OFFSET_Y_REG_H_M 0x08
zmoutaou 0:6e330c197193 58 #define LSM9DS1M_OFFSET_Z_REG_L_M 0x09
zmoutaou 0:6e330c197193 59 #define LSM9DS1M_OFFSET_Z_REG_H_M 0x0A
zmoutaou 0:6e330c197193 60 #define LSM9DS1M_WHO_AM_I 0x0F
zmoutaou 0:6e330c197193 61 #define LSM9DS1M_CTRL_REG1_M 0x20
zmoutaou 0:6e330c197193 62 #define LSM9DS1M_CTRL_REG2_M 0x21
zmoutaou 0:6e330c197193 63 #define LSM9DS1M_CTRL_REG3_M 0x22
zmoutaou 0:6e330c197193 64 #define LSM9DS1M_CTRL_REG4_M 0x23
zmoutaou 0:6e330c197193 65 #define LSM9DS1M_CTRL_REG5_M 0x24
zmoutaou 0:6e330c197193 66 #define LSM9DS1M_STATUS_REG_M 0x27
zmoutaou 0:6e330c197193 67 #define LSM9DS1M_OUT_X_L_M 0x28
zmoutaou 0:6e330c197193 68 #define LSM9DS1M_OUT_X_H_M 0x29
zmoutaou 0:6e330c197193 69 #define LSM9DS1M_OUT_Y_L_M 0x2A
zmoutaou 0:6e330c197193 70 #define LSM9DS1M_OUT_Y_H_M 0x2B
zmoutaou 0:6e330c197193 71 #define LSM9DS1M_OUT_Z_L_M 0x2C
zmoutaou 0:6e330c197193 72 #define LSM9DS1M_OUT_Z_H_M 0x2D
zmoutaou 0:6e330c197193 73 #define LSM9DS1M_INT_CFG_M 0x30
zmoutaou 0:6e330c197193 74 #define LSM9DS1M_INT_SRC_M 0x31
zmoutaou 0:6e330c197193 75 #define LSM9DS1M_INT_THS_L_M 0x32
zmoutaou 0:6e330c197193 76 #define LSM9DS1M_INT_THS_H_M 0x33
zmoutaou 0:6e330c197193 77
zmoutaou 0:6e330c197193 78 // Using the LSM9DS1+MS5611 Teensy 3.1 Add-On shield, ADO is set to 1
zmoutaou 0:6e330c197193 79 // Seven-bit device address of accel/gyro is 110101 for ADO = 0 and 110101 for ADO = 1
zmoutaou 0:6e330c197193 80
zmoutaou 0:6e330c197193 81 #define LSM9DS1XG_ADDRESS 0xD4 // Device address when ADO = 1
zmoutaou 0:6e330c197193 82 #define LSM9DS1M_ADDRESS 0x38 // Address of magnetometer
zmoutaou 0:6e330c197193 83 #define SerialDebug true // set to true to get Serial output for debugging
zmoutaou 0:6e330c197193 84
zmoutaou 0:6e330c197193 85
zmoutaou 0:6e330c197193 86
zmoutaou 0:6e330c197193 87
zmoutaou 0:6e330c197193 88
zmoutaou 0:6e330c197193 89
zmoutaou 0:6e330c197193 90 // Set initial input parameters
zmoutaou 0:6e330c197193 91 enum Ascale {
zmoutaou 0:6e330c197193 92 // set of allowable accel full scale settings
zmoutaou 0:6e330c197193 93 AFS_2G = 0,
zmoutaou 0:6e330c197193 94 AFS_16G,
zmoutaou 0:6e330c197193 95 AFS_4G,
zmoutaou 0:6e330c197193 96 AFS_8G
zmoutaou 0:6e330c197193 97 };
zmoutaou 0:6e330c197193 98
zmoutaou 0:6e330c197193 99 enum Aodr { // set of allowable gyro sample rates
zmoutaou 0:6e330c197193 100 AODR_PowerDown = 0,
zmoutaou 0:6e330c197193 101 AODR_10Hz,
zmoutaou 0:6e330c197193 102 AODR_50Hz,
zmoutaou 0:6e330c197193 103 AODR_119Hz,
zmoutaou 0:6e330c197193 104 AODR_238Hz,
zmoutaou 0:6e330c197193 105 AODR_476Hz,
zmoutaou 0:6e330c197193 106 AODR_952Hz
zmoutaou 0:6e330c197193 107 };
zmoutaou 0:6e330c197193 108
zmoutaou 0:6e330c197193 109 enum Abw { // set of allowable accewl bandwidths
zmoutaou 0:6e330c197193 110 ABW_408Hz = 0,
zmoutaou 0:6e330c197193 111 ABW_211Hz,
zmoutaou 0:6e330c197193 112 ABW_105Hz,
zmoutaou 0:6e330c197193 113 ABW_50Hz
zmoutaou 0:6e330c197193 114 };
zmoutaou 0:6e330c197193 115
zmoutaou 0:6e330c197193 116 enum Gscale { // set of allowable gyro full scale settings
zmoutaou 0:6e330c197193 117 GFS_245DPS = 0,
zmoutaou 0:6e330c197193 118 GFS_500DPS,
zmoutaou 0:6e330c197193 119 GFS_NoOp,
zmoutaou 0:6e330c197193 120 GFS_2000DPS
zmoutaou 0:6e330c197193 121 };
zmoutaou 0:6e330c197193 122
zmoutaou 0:6e330c197193 123 enum Godr { // set of allowable gyro sample rates
zmoutaou 0:6e330c197193 124 GODR_PowerDown = 0,
zmoutaou 0:6e330c197193 125 GODR_14_9Hz,
zmoutaou 0:6e330c197193 126 GODR_59_5Hz,
zmoutaou 0:6e330c197193 127 GODR_119Hz,
zmoutaou 0:6e330c197193 128 GODR_238Hz,
zmoutaou 0:6e330c197193 129 GODR_476Hz,
zmoutaou 0:6e330c197193 130 GODR_952Hz
zmoutaou 0:6e330c197193 131 };
zmoutaou 0:6e330c197193 132
zmoutaou 0:6e330c197193 133 enum Gbw { // set of allowable gyro data bandwidths
zmoutaou 0:6e330c197193 134 GBW_low = 0, // 14 Hz at Godr = 238 Hz, 33 Hz at Godr = 952 Hz
zmoutaou 0:6e330c197193 135 GBW_med, // 29 Hz at Godr = 238 Hz, 40 Hz at Godr = 952 Hz
zmoutaou 0:6e330c197193 136 GBW_high, // 63 Hz at Godr = 238 Hz, 58 Hz at Godr = 952 Hz
zmoutaou 0:6e330c197193 137 GBW_highest // 78 Hz at Godr = 238 Hz, 100 Hz at Godr = 952 Hz
zmoutaou 0:6e330c197193 138 };
zmoutaou 0:6e330c197193 139
zmoutaou 0:6e330c197193 140 enum Mscale { // set of allowable mag full scale settings
zmoutaou 0:6e330c197193 141 MFS_4G = 0,
zmoutaou 0:6e330c197193 142 MFS_8G,
zmoutaou 0:6e330c197193 143 MFS_12G,
zmoutaou 0:6e330c197193 144 MFS_16G
zmoutaou 0:6e330c197193 145 };
zmoutaou 0:6e330c197193 146
zmoutaou 0:6e330c197193 147 enum Mmode {
zmoutaou 0:6e330c197193 148 MMode_LowPower = 0,
zmoutaou 0:6e330c197193 149 MMode_MedPerformance,
zmoutaou 0:6e330c197193 150 MMode_HighPerformance,
zmoutaou 0:6e330c197193 151 MMode_UltraHighPerformance
zmoutaou 0:6e330c197193 152 };
zmoutaou 0:6e330c197193 153
zmoutaou 0:6e330c197193 154 enum Modr { // set of allowable mag sample rates
zmoutaou 0:6e330c197193 155 MODR_0_625Hz = 0,
zmoutaou 0:6e330c197193 156 MODR_1_25Hz,
zmoutaou 0:6e330c197193 157 MODR_2_5Hz,
zmoutaou 0:6e330c197193 158 MODR_5Hz,
zmoutaou 0:6e330c197193 159 MODR_10Hz,
zmoutaou 0:6e330c197193 160 MODR_20Hz,
zmoutaou 0:6e330c197193 161 MODR_80Hz
zmoutaou 0:6e330c197193 162 };
zmoutaou 0:6e330c197193 163
zmoutaou 0:6e330c197193 164 #define PI 3.141592653589793238463