11
Dependencies: ADXL362 ATParser MPL3115A2 mbed
Fork of Lab7 by
main.cpp@2:c322c1331eaa, 2018-03-09 (annotated)
- Committer:
- jackclar
- Date:
- Fri Mar 09 01:10:40 2018 +0000
- Revision:
- 2:c322c1331eaa
- Parent:
- 0:9a45e4f07b10
- Child:
- 4:eb81ef9e1621
Lab 7;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
fanbsun | 0:9a45e4f07b10 | 1 | #include "mbed.h" |
fanbsun | 0:9a45e4f07b10 | 2 | #include "MPL3115A2.h" |
fanbsun | 0:9a45e4f07b10 | 3 | #include <string> |
fanbsun | 0:9a45e4f07b10 | 4 | #include <math.h> |
fanbsun | 0:9a45e4f07b10 | 5 | |
fanbsun | 0:9a45e4f07b10 | 6 | Serial pc(SERIAL_TX, SERIAL_RX); |
fanbsun | 0:9a45e4f07b10 | 7 | DigitalOut myled(LED1); |
jackclar | 2:c322c1331eaa | 8 | DigitalOut powerpin(PA_8); // GPIO pin |
fanbsun | 0:9a45e4f07b10 | 9 | |
fanbsun | 0:9a45e4f07b10 | 10 | // Selects SDA as I2C1_SDA on pin PB_7 |
fanbsun | 0:9a45e4f07b10 | 11 | // Selects SCL on I2C1_SCL on pin PB_6 |
fanbsun | 0:9a45e4f07b10 | 12 | // The I2C address of the pressure sensor is fixed at 0x60. |
fanbsun | 0:9a45e4f07b10 | 13 | MPL3115A2 pressure_sensor(PB_7,PB_6,0x60); |
jackclar | 2:c322c1331eaa | 14 | void mpl3115_reg_print(int start, int length); // prototype |
fanbsun | 0:9a45e4f07b10 | 15 | |
fanbsun | 0:9a45e4f07b10 | 16 | int main() { |
jackclar | 2:c322c1331eaa | 17 | int8_t a; |
jackclar | 2:c322c1331eaa | 18 | uint8_t id; |
fanbsun | 0:9a45e4f07b10 | 19 | double p, t; |
jackclar | 2:c322c1331eaa | 20 | double v , s; |
fanbsun | 0:9a45e4f07b10 | 21 | int cnt = 0; |
fanbsun | 0:9a45e4f07b10 | 22 | myled = 0; |
jackclar | 2:c322c1331eaa | 23 | char c; |
fanbsun | 0:9a45e4f07b10 | 24 | powerpin = 0; |
jackclar | 2:c322c1331eaa | 25 | double alt1 = pressure_sensor.getAltitude(), alt2; // initial alt |
fanbsun | 0:9a45e4f07b10 | 26 | |
jackclar | 2:c322c1331eaa | 27 | while ((id=pressure_sensor.getID())!=0xC4)// wait for the sensor to connect |
jackclar | 2:c322c1331eaa | 28 | { |
jackclar | 2:c322c1331eaa | 29 | wait(1); |
jackclar | 2:c322c1331eaa | 30 | } |
fanbsun | 0:9a45e4f07b10 | 31 | |
fanbsun | 0:9a45e4f07b10 | 32 | while(1) |
fanbsun | 0:9a45e4f07b10 | 33 | { |
jackclar | 2:c322c1331eaa | 34 | if(powerpin) // if the GPIO pin is pulled high |
jackclar | 2:c322c1331eaa | 35 | { |
jackclar | 2:c322c1331eaa | 36 | myled != myled; |
jackclar | 2:c322c1331eaa | 37 | //turn on and off led at 1Hz |
jackclar | 2:c322c1331eaa | 38 | p=pressure_sensor.getPressure(); |
jackclar | 2:c322c1331eaa | 39 | t=pressure_sensor.getTemperature(); |
jackclar | 2:c322c1331eaa | 40 | alt2=pressure_sensor.getAltitude(); |
jackclar | 2:c322c1331eaa | 41 | v = (alt2 - alt1)/ 1.1; |
jackclar | 2:c322c1331eaa | 42 | // velocity is just distance / time |
jackclar | 2:c322c1331eaa | 43 | // we measured the time to be 1.1 seconds between readings |
jackclar | 2:c322c1331eaa | 44 | // this is as fast as it will go because of the library we were given |
jackclar | 2:c322c1331eaa | 45 | pc.printf("velocity = %f\n\r", v); |
jackclar | 2:c322c1331eaa | 46 | alt1 = alt2; |
jackclar | 2:c322c1331eaa | 47 | |
jackclar | 2:c322c1331eaa | 48 | pc.printf("%f %f\n\r", t, p); |
jackclar | 2:c322c1331eaa | 49 | cnt++; |
jackclar | 2:c322c1331eaa | 50 | } |
jackclar | 2:c322c1331eaa | 51 | else |
jackclar | 2:c322c1331eaa | 52 | { |
jackclar | 2:c322c1331eaa | 53 | myled = 0; // so we know when no data is being taken |
jackclar | 2:c322c1331eaa | 54 | } |
fanbsun | 0:9a45e4f07b10 | 55 | } |
fanbsun | 0:9a45e4f07b10 | 56 | } |
jackclar | 2:c322c1331eaa | 57 | |
jackclar | 2:c322c1331eaa | 58 | void mpl3115_reg_print(int start, int length) |
jackclar | 2:c322c1331eaa | 59 | { |
jackclar | 2:c322c1331eaa | 60 | uint8_t i, id; |
jackclar | 2:c322c1331eaa | 61 | std::string name; |
jackclar | 2:c322c1331eaa | 62 | uint8_t temp[1]; |
jackclar | 2:c322c1331eaa | 63 | id = pressure_sensor.getID(); |
jackclar | 2:c322c1331eaa | 64 | |
jackclar | 2:c322c1331eaa | 65 | // check start registers |
jackclar | 2:c322c1331eaa | 66 | if(start >= 0x00 && start <= 0x2D && length >= 0x00 && id == 0xC4) |
jackclar | 2:c322c1331eaa | 67 | { |
jackclar | 2:c322c1331eaa | 68 | // print all if length = 0 |
jackclar | 2:c322c1331eaa | 69 | if(length == 0) |
jackclar | 2:c322c1331eaa | 70 | { |
jackclar | 2:c322c1331eaa | 71 | start = 0; |
jackclar | 2:c322c1331eaa | 72 | length = 46; |
jackclar | 2:c322c1331eaa | 73 | } |
jackclar | 2:c322c1331eaa | 74 | |
jackclar | 2:c322c1331eaa | 75 | for(i = start; i < start + length; i++) |
jackclar | 2:c322c1331eaa | 76 | { |
jackclar | 2:c322c1331eaa | 77 | // make sure name is correct |
jackclar | 2:c322c1331eaa | 78 | switch(i) |
jackclar | 2:c322c1331eaa | 79 | { |
jackclar | 2:c322c1331eaa | 80 | case 0x00: |
jackclar | 2:c322c1331eaa | 81 | name = "MPL_STATUS"; |
jackclar | 2:c322c1331eaa | 82 | break; |
jackclar | 2:c322c1331eaa | 83 | case 0x01: |
jackclar | 2:c322c1331eaa | 84 | name = "MPL_OUT_P_MSB"; |
jackclar | 2:c322c1331eaa | 85 | break; |
jackclar | 2:c322c1331eaa | 86 | case 0x02: |
jackclar | 2:c322c1331eaa | 87 | name = "MPL_OUT_P_CSB"; |
jackclar | 2:c322c1331eaa | 88 | break; |
jackclar | 2:c322c1331eaa | 89 | case 0x03: |
jackclar | 2:c322c1331eaa | 90 | name = "MPL_OUT_P_LSB"; |
jackclar | 2:c322c1331eaa | 91 | break; |
jackclar | 2:c322c1331eaa | 92 | case 0x04: |
jackclar | 2:c322c1331eaa | 93 | name = "MPL_OUT_T_MSB"; |
jackclar | 2:c322c1331eaa | 94 | break; |
jackclar | 2:c322c1331eaa | 95 | case 0x05: |
jackclar | 2:c322c1331eaa | 96 | name = "MPL_OUT_T_LSB"; |
jackclar | 2:c322c1331eaa | 97 | break; |
jackclar | 2:c322c1331eaa | 98 | case 0x06: |
jackclar | 2:c322c1331eaa | 99 | name = "MPL_DR_STATUS"; |
jackclar | 2:c322c1331eaa | 100 | break; |
jackclar | 2:c322c1331eaa | 101 | case 0x07: |
jackclar | 2:c322c1331eaa | 102 | name = "MPL_OUT_P_DELTA_MSB"; |
jackclar | 2:c322c1331eaa | 103 | break; |
jackclar | 2:c322c1331eaa | 104 | case 0x08: |
jackclar | 2:c322c1331eaa | 105 | name = "MPL_OUT_P_DELTA_CSB"; |
jackclar | 2:c322c1331eaa | 106 | break; |
jackclar | 2:c322c1331eaa | 107 | case 0x09: |
jackclar | 2:c322c1331eaa | 108 | name = "MPL_OUT_P_DELTA_LSB"; |
jackclar | 2:c322c1331eaa | 109 | break; |
jackclar | 2:c322c1331eaa | 110 | case 0x0A: |
jackclar | 2:c322c1331eaa | 111 | name = "MPL_OUT_T_DELTA_MSB"; |
jackclar | 2:c322c1331eaa | 112 | break; |
jackclar | 2:c322c1331eaa | 113 | case 0x0B: |
jackclar | 2:c322c1331eaa | 114 | name = "MPL_OUT_T_DELTA_LSB"; |
jackclar | 2:c322c1331eaa | 115 | break; |
jackclar | 2:c322c1331eaa | 116 | case 0x0C: |
jackclar | 2:c322c1331eaa | 117 | name = "MPL_WHO_AM_I"; |
jackclar | 2:c322c1331eaa | 118 | break; |
jackclar | 2:c322c1331eaa | 119 | case 0x0D: |
jackclar | 2:c322c1331eaa | 120 | name = "MPL_F_STATUS"; |
jackclar | 2:c322c1331eaa | 121 | break; |
jackclar | 2:c322c1331eaa | 122 | case 0x0E: |
jackclar | 2:c322c1331eaa | 123 | name = "MPL_F_DATA"; |
jackclar | 2:c322c1331eaa | 124 | break; |
jackclar | 2:c322c1331eaa | 125 | case 0x0F: |
jackclar | 2:c322c1331eaa | 126 | name = "MPL_F_SETUP"; |
jackclar | 2:c322c1331eaa | 127 | break; |
jackclar | 2:c322c1331eaa | 128 | case 0x10: |
jackclar | 2:c322c1331eaa | 129 | name = "MPL_TIME_DLY"; |
jackclar | 2:c322c1331eaa | 130 | break; |
jackclar | 2:c322c1331eaa | 131 | case 0x11: |
jackclar | 2:c322c1331eaa | 132 | name = "MPL_SYSMOD"; |
jackclar | 2:c322c1331eaa | 133 | break; |
jackclar | 2:c322c1331eaa | 134 | case 0x12: |
jackclar | 2:c322c1331eaa | 135 | name = "MPL_INT_SOURCE"; |
jackclar | 2:c322c1331eaa | 136 | break; |
jackclar | 2:c322c1331eaa | 137 | case 0x13: |
jackclar | 2:c322c1331eaa | 138 | name = "MPL_PT_DATA_CFG"; |
jackclar | 2:c322c1331eaa | 139 | break; |
jackclar | 2:c322c1331eaa | 140 | case 0x14: |
jackclar | 2:c322c1331eaa | 141 | name = "MPL_BAR_IN_MSB"; |
jackclar | 2:c322c1331eaa | 142 | break; |
jackclar | 2:c322c1331eaa | 143 | case 0x15: |
jackclar | 2:c322c1331eaa | 144 | name = "MPL_BAR_IN_LSB"; |
jackclar | 2:c322c1331eaa | 145 | break; |
jackclar | 2:c322c1331eaa | 146 | case 0x16: |
jackclar | 2:c322c1331eaa | 147 | name = "MPL_P_TGT_MSB"; |
jackclar | 2:c322c1331eaa | 148 | break; |
jackclar | 2:c322c1331eaa | 149 | case 0x17: |
jackclar | 2:c322c1331eaa | 150 | name = "MPL_P_TGT_LSB"; |
jackclar | 2:c322c1331eaa | 151 | break; |
jackclar | 2:c322c1331eaa | 152 | case 0x18: |
jackclar | 2:c322c1331eaa | 153 | name = "MPL_T_TGT"; |
jackclar | 2:c322c1331eaa | 154 | break; |
jackclar | 2:c322c1331eaa | 155 | case 0x19: |
jackclar | 2:c322c1331eaa | 156 | name = "MPL_P_WND_MSB"; |
jackclar | 2:c322c1331eaa | 157 | break; |
jackclar | 2:c322c1331eaa | 158 | case 0x1A: |
jackclar | 2:c322c1331eaa | 159 | name = "MPL_P_WND_LSB"; |
jackclar | 2:c322c1331eaa | 160 | break; |
jackclar | 2:c322c1331eaa | 161 | case 0x1B: |
jackclar | 2:c322c1331eaa | 162 | name = "MPL_T_WND"; |
jackclar | 2:c322c1331eaa | 163 | break; |
jackclar | 2:c322c1331eaa | 164 | case 0x1C: |
jackclar | 2:c322c1331eaa | 165 | name = "MPL_P_MIN_MSB"; |
jackclar | 2:c322c1331eaa | 166 | break; |
jackclar | 2:c322c1331eaa | 167 | case 0x1D: |
jackclar | 2:c322c1331eaa | 168 | name = "MPL_P_MIN_CSB"; |
jackclar | 2:c322c1331eaa | 169 | break; |
jackclar | 2:c322c1331eaa | 170 | case 0x1E: |
jackclar | 2:c322c1331eaa | 171 | name = "MPL_P_MIN_LSB"; |
jackclar | 2:c322c1331eaa | 172 | break; |
jackclar | 2:c322c1331eaa | 173 | case 0x1F: |
jackclar | 2:c322c1331eaa | 174 | name = "MPL_T_MIN_MSB"; |
jackclar | 2:c322c1331eaa | 175 | break; |
jackclar | 2:c322c1331eaa | 176 | case 0x20: |
jackclar | 2:c322c1331eaa | 177 | name = "MPL_T_MIN_LSB"; |
jackclar | 2:c322c1331eaa | 178 | break; |
jackclar | 2:c322c1331eaa | 179 | case 0x21: |
jackclar | 2:c322c1331eaa | 180 | name = "MPL_P_MAX_MSB"; |
jackclar | 2:c322c1331eaa | 181 | break; |
jackclar | 2:c322c1331eaa | 182 | case 0x22: |
jackclar | 2:c322c1331eaa | 183 | name = "MPL_P_MAX_CSB"; |
jackclar | 2:c322c1331eaa | 184 | break; |
jackclar | 2:c322c1331eaa | 185 | case 0x23: |
jackclar | 2:c322c1331eaa | 186 | name = "MPL_P_MAX_LSB"; |
jackclar | 2:c322c1331eaa | 187 | break; |
jackclar | 2:c322c1331eaa | 188 | case 0x24: |
jackclar | 2:c322c1331eaa | 189 | name = "MPL_T_MAX_MSB"; |
jackclar | 2:c322c1331eaa | 190 | break; |
jackclar | 2:c322c1331eaa | 191 | case 0x25: |
jackclar | 2:c322c1331eaa | 192 | name = "MPL_T_MAX_LSB"; |
jackclar | 2:c322c1331eaa | 193 | break; |
jackclar | 2:c322c1331eaa | 194 | case 0x26: |
jackclar | 2:c322c1331eaa | 195 | name = "MPL_CTRL_REG1"; |
jackclar | 2:c322c1331eaa | 196 | break; |
jackclar | 2:c322c1331eaa | 197 | case 0x27: |
jackclar | 2:c322c1331eaa | 198 | name = "MPL_CTRL_REG2"; |
jackclar | 2:c322c1331eaa | 199 | break; |
jackclar | 2:c322c1331eaa | 200 | case 0x28: |
jackclar | 2:c322c1331eaa | 201 | name = "MPL_CTRL_REG3"; |
jackclar | 2:c322c1331eaa | 202 | break; |
jackclar | 2:c322c1331eaa | 203 | case 0x29: |
jackclar | 2:c322c1331eaa | 204 | name = "MPL_CTRL_REG4"; |
jackclar | 2:c322c1331eaa | 205 | break; |
jackclar | 2:c322c1331eaa | 206 | case 0x2A: |
jackclar | 2:c322c1331eaa | 207 | name = "MPL_CTRL_REG5"; |
jackclar | 2:c322c1331eaa | 208 | break; |
jackclar | 2:c322c1331eaa | 209 | case 0x2B: |
jackclar | 2:c322c1331eaa | 210 | name = "MPL_OFF_P"; |
jackclar | 2:c322c1331eaa | 211 | break; |
jackclar | 2:c322c1331eaa | 212 | case 0x2C: |
jackclar | 2:c322c1331eaa | 213 | name = "MPL_OFF_T"; |
jackclar | 2:c322c1331eaa | 214 | break; |
jackclar | 2:c322c1331eaa | 215 | case 0x2D: |
jackclar | 2:c322c1331eaa | 216 | name = "MPL_OFF_h"; |
jackclar | 2:c322c1331eaa | 217 | break; |
jackclar | 2:c322c1331eaa | 218 | } |
jackclar | 2:c322c1331eaa | 219 | // boy I do love switch statments |
jackclar | 2:c322c1331eaa | 220 | pressure_sensor.readRegs(i, temp, 1); |
jackclar | 2:c322c1331eaa | 221 | pc.printf("0x%x: %s=0x%x\n\r", i, name, temp[0]); |
jackclar | 2:c322c1331eaa | 222 | // actually print the contents of the register |
jackclar | 2:c322c1331eaa | 223 | } |
jackclar | 2:c322c1331eaa | 224 | |
jackclar | 2:c322c1331eaa | 225 | } |
jackclar | 2:c322c1331eaa | 226 | } |