This is an example program for the Freescale multi-sensor shield, part number FRDM-FXS-MULTI
Dependencies: FXAS21000 FXLS8471Q FXOS8700Q MAG3110 MMA8652 MPL3115A2 mbed
main.cpp@1:d3ecb4ecdfda, 2014-06-02 (annotated)
- Committer:
- JimCarver
- Date:
- Mon Jun 02 19:05:04 2014 +0000
- Revision:
- 1:d3ecb4ecdfda
- Parent:
- 0:e5337522df6f
Modified to use updated FXOS8700 & MAG3100 libraries
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JimCarver | 1:d3ecb4ecdfda | 1 | /* Copyright (c) 2010-2011 mbed.org, MIT License |
JimCarver | 1:d3ecb4ecdfda | 2 | * |
JimCarver | 1:d3ecb4ecdfda | 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software |
JimCarver | 1:d3ecb4ecdfda | 4 | * and associated documentation files (the "Software"), to deal in the Software without |
JimCarver | 1:d3ecb4ecdfda | 5 | * restriction, including without limitation the rights to use, copy, modify, merge, publish, |
JimCarver | 1:d3ecb4ecdfda | 6 | * distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the |
JimCarver | 1:d3ecb4ecdfda | 7 | * Software is furnished to do so, subject to the following conditions: |
JimCarver | 1:d3ecb4ecdfda | 8 | * |
JimCarver | 1:d3ecb4ecdfda | 9 | * The above copyright notice and this permission notice shall be included in all copies or |
JimCarver | 1:d3ecb4ecdfda | 10 | * substantial portions of the Software. |
JimCarver | 1:d3ecb4ecdfda | 11 | * |
JimCarver | 1:d3ecb4ecdfda | 12 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING |
JimCarver | 1:d3ecb4ecdfda | 13 | * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
JimCarver | 1:d3ecb4ecdfda | 14 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, |
JimCarver | 1:d3ecb4ecdfda | 15 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
JimCarver | 1:d3ecb4ecdfda | 16 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
JimCarver | 1:d3ecb4ecdfda | 17 | */ |
JimCarver | 1:d3ecb4ecdfda | 18 | |
JimCarver | 0:e5337522df6f | 19 | #include "mbed.h" |
JimCarver | 0:e5337522df6f | 20 | #include "MAG3110.h" |
JimCarver | 1:d3ecb4ecdfda | 21 | #include "MPL3115A2.h" // May only be used on a Freescale platform, comment out for others |
JimCarver | 0:e5337522df6f | 22 | #include "FXOS8700Q.h" |
JimCarver | 0:e5337522df6f | 23 | #include "MMA8652.h" |
JimCarver | 0:e5337522df6f | 24 | #include "FXLS8471Q.h" |
JimCarver | 0:e5337522df6f | 25 | #include "FXAS21000.h" |
JimCarver | 0:e5337522df6f | 26 | |
JimCarver | 0:e5337522df6f | 27 | #define MPL3115A2_I2C_ADDRESS (0x60<<1) |
JimCarver | 0:e5337522df6f | 28 | |
JimCarver | 0:e5337522df6f | 29 | |
JimCarver | 1:d3ecb4ecdfda | 30 | DigitalOut red(LED1); |
JimCarver | 0:e5337522df6f | 31 | |
JimCarver | 0:e5337522df6f | 32 | FXLS8471Q acc1(D11, D12, D13, D10); |
JimCarver | 1:d3ecb4ecdfda | 33 | MMA8652 acc2(A4, A5); |
JimCarver | 1:d3ecb4ecdfda | 34 | FXOS8700Q_acc combo_acc(A4, A5, FXOS8700CQ_SLAVE_ADDR0); |
JimCarver | 1:d3ecb4ecdfda | 35 | FXOS8700Q_mag combo_mag(A4, A5, FXOS8700CQ_SLAVE_ADDR0); |
JimCarver | 1:d3ecb4ecdfda | 36 | MAG3110 mag2(A4, A5); |
JimCarver | 1:d3ecb4ecdfda | 37 | FXAS21000 gyro(A4, A5); |
JimCarver | 1:d3ecb4ecdfda | 38 | MPL3115A2 alt(A4, A5, MPL3115A2_I2C_ADDRESS); // May only be used on a Freescale platform, comment out for others |
JimCarver | 0:e5337522df6f | 39 | |
JimCarver | 0:e5337522df6f | 40 | Serial pc(USBTX, USBRX); |
JimCarver | 0:e5337522df6f | 41 | |
JimCarver | 0:e5337522df6f | 42 | |
JimCarver | 0:e5337522df6f | 43 | |
JimCarver | 0:e5337522df6f | 44 | float print_AltimiterValue( unsigned char *dt) |
JimCarver | 0:e5337522df6f | 45 | { |
JimCarver | 0:e5337522df6f | 46 | unsigned short altm; |
JimCarver | 0:e5337522df6f | 47 | float faltm; |
JimCarver | 0:e5337522df6f | 48 | |
JimCarver | 0:e5337522df6f | 49 | /* |
JimCarver | 0:e5337522df6f | 50 | * dt[0] = Bits 12-19 of 20-bit real-time Altitude sample. (b7-b0) |
JimCarver | 0:e5337522df6f | 51 | * dt[1] = Bits 4-11 of 20-bit real-time Altitude sample. (b7-b0) |
JimCarver | 0:e5337522df6f | 52 | * dt[2] = Bits 0-3 of 20-bit real-time Altitude sample (b7-b4) |
JimCarver | 1:d3ecb4ecdfda | 53 | */ |
JimCarver | 0:e5337522df6f | 54 | altm = (dt[0]<<8) | dt[1]; |
JimCarver | 0:e5337522df6f | 55 | // |
JimCarver | 0:e5337522df6f | 56 | if ( dt[0] > 0x7F) { |
JimCarver | 0:e5337522df6f | 57 | altm = ~altm + 1; |
JimCarver | 0:e5337522df6f | 58 | faltm = (float)altm * -1.0f; |
JimCarver | 0:e5337522df6f | 59 | } else { |
JimCarver | 0:e5337522df6f | 60 | faltm = (float)altm * 1.0f; |
JimCarver | 0:e5337522df6f | 61 | } |
JimCarver | 0:e5337522df6f | 62 | // |
JimCarver | 0:e5337522df6f | 63 | faltm = faltm+((float)(dt[2]>>4) * 0.0625f); |
JimCarver | 0:e5337522df6f | 64 | return faltm; |
JimCarver | 0:e5337522df6f | 65 | } |
JimCarver | 0:e5337522df6f | 66 | |
JimCarver | 0:e5337522df6f | 67 | float print_TemperatureValue( unsigned char *dt) |
JimCarver | 0:e5337522df6f | 68 | { |
JimCarver | 0:e5337522df6f | 69 | unsigned short temp; |
JimCarver | 0:e5337522df6f | 70 | float ftemp; |
JimCarver | 1:d3ecb4ecdfda | 71 | |
JimCarver | 0:e5337522df6f | 72 | /* |
JimCarver | 0:e5337522df6f | 73 | * dt[0] = Bits 4-11 of 16-bit real-time temperature sample. (b7-b0) |
JimCarver | 0:e5337522df6f | 74 | * dt[1] = Bits 0-3 of 16-bit real-time temperature sample. (b7-b4) |
JimCarver | 0:e5337522df6f | 75 | */ |
JimCarver | 0:e5337522df6f | 76 | temp = dt[0]; |
JimCarver | 0:e5337522df6f | 77 | // |
JimCarver | 0:e5337522df6f | 78 | if ( dt[0] > 0x7F) { |
JimCarver | 0:e5337522df6f | 79 | temp = ~temp + 1; |
JimCarver | 0:e5337522df6f | 80 | ftemp = (float)temp * -1.0f; |
JimCarver | 0:e5337522df6f | 81 | } else { |
JimCarver | 0:e5337522df6f | 82 | ftemp = (float)temp * 1.0f; |
JimCarver | 0:e5337522df6f | 83 | } |
JimCarver | 0:e5337522df6f | 84 | // |
JimCarver | 0:e5337522df6f | 85 | ftemp = ftemp+((float)(dt[1]>>4) * 0.0625f); |
JimCarver | 0:e5337522df6f | 86 | return ftemp; |
JimCarver | 0:e5337522df6f | 87 | |
JimCarver | 0:e5337522df6f | 88 | } |
JimCarver | 0:e5337522df6f | 89 | |
JimCarver | 0:e5337522df6f | 90 | |
JimCarver | 1:d3ecb4ecdfda | 91 | int main() |
JimCarver | 1:d3ecb4ecdfda | 92 | { |
JimCarver | 0:e5337522df6f | 93 | float acc_data[3], mag_data[3], gyro_data[3]; |
JimCarver | 1:d3ecb4ecdfda | 94 | MotionSensorDataUnits adata; |
JimCarver | 1:d3ecb4ecdfda | 95 | MotionSensorDataUnits mdata; |
JimCarver | 0:e5337522df6f | 96 | int16_t acc_raw[3]; |
JimCarver | 0:e5337522df6f | 97 | unsigned char raw_data[8]; |
JimCarver | 1:d3ecb4ecdfda | 98 | |
JimCarver | 1:d3ecb4ecdfda | 99 | printf("\r\nStarting\r\n\r\n"); |
JimCarver | 1:d3ecb4ecdfda | 100 | |
JimCarver | 0:e5337522df6f | 101 | red = 1; |
JimCarver | 1:d3ecb4ecdfda | 102 | combo_acc.enable(); |
JimCarver | 1:d3ecb4ecdfda | 103 | combo_mag.enable(); |
JimCarver | 1:d3ecb4ecdfda | 104 | mag2.enable(); |
JimCarver | 0:e5337522df6f | 105 | alt.Altimeter_Mode(); |
JimCarver | 1:d3ecb4ecdfda | 106 | printf("FXLS8471 Acc = %X\r\n", acc1.getWhoAmI()); |
JimCarver | 1:d3ecb4ecdfda | 107 | printf("MMA8652 Acc = %X\r\n", acc2.getWhoAmI()); |
JimCarver | 1:d3ecb4ecdfda | 108 | printf("FXOS8700 Combo = %X\r\n", combo_acc.whoAmI()); |
JimCarver | 1:d3ecb4ecdfda | 109 | printf("MAG3110 Mag = %X\r\n", mag2.whoAmI()); |
JimCarver | 1:d3ecb4ecdfda | 110 | printf("FXAS21000 Gyro = %X\r\n", gyro.getWhoAmI()); |
JimCarver | 1:d3ecb4ecdfda | 111 | printf("MPL3115A2 Alt = %X\r\n", alt.getDeviceID()); // May only be used on a Freescale platform, comment out for others |
JimCarver | 1:d3ecb4ecdfda | 112 | wait(3); |
JimCarver | 1:d3ecb4ecdfda | 113 | |
JimCarver | 0:e5337522df6f | 114 | while(1) { |
JimCarver | 1:d3ecb4ecdfda | 115 | acc1.ReadXYZ(acc_data); |
JimCarver | 1:d3ecb4ecdfda | 116 | acc1.ReadXYZraw(acc_raw); |
JimCarver | 1:d3ecb4ecdfda | 117 | printf("FXLS8471 Acc: X:%1.3f Y:%1.3f Z:%1.3f (Raw X:%3d Y:%3d Z:%3d)\r\n", acc_data[0], acc_data[1], acc_data[2], acc_raw[0], acc_raw[1], acc_raw[2]); |
JimCarver | 0:e5337522df6f | 118 | |
JimCarver | 0:e5337522df6f | 119 | acc2.ReadXYZ(acc_data); |
JimCarver | 1:d3ecb4ecdfda | 120 | acc2.ReadXYZraw(acc_raw); |
JimCarver | 1:d3ecb4ecdfda | 121 | printf("MMA8652 Acc: X:%1.3f Y:%1.3f Z:%1.3f (Raw X:%3d Y:%3d Z:%3d)\r\n", acc_data[0], acc_data[1], acc_data[2], acc_raw[0], acc_raw[1], acc_raw[2]); |
JimCarver | 1:d3ecb4ecdfda | 122 | |
JimCarver | 1:d3ecb4ecdfda | 123 | combo_acc.getAxis(adata); |
JimCarver | 1:d3ecb4ecdfda | 124 | combo_mag.getAxis(mdata); |
JimCarver | 1:d3ecb4ecdfda | 125 | printf("FXOS8700 Acc: X:%1.3f Y:%1.3f Z:%1.3f (Mag X:%4.1f Y:%4.1f Z:%4.1f)\r\n", adata.x, adata.y, adata.z, mdata.x, mdata.y, mdata.z); |
JimCarver | 1:d3ecb4ecdfda | 126 | |
JimCarver | 0:e5337522df6f | 127 | gyro.ReadXYZ(gyro_data); |
JimCarver | 1:d3ecb4ecdfda | 128 | printf("FXAS21000 Gyro: X:%4.2f Y:%4.2f Z:%4.1f\r\n", gyro_data[0], gyro_data[1], gyro_data[2]); |
JimCarver | 1:d3ecb4ecdfda | 129 | |
JimCarver | 1:d3ecb4ecdfda | 130 | mag2.getAxis(mdata); |
JimCarver | 1:d3ecb4ecdfda | 131 | printf("MAG3110 Mag: X:%4.1f Y:%4.1f Z:%4.1f\r\n", mdata.x, mdata.y, mdata.z); |
JimCarver | 1:d3ecb4ecdfda | 132 | |
JimCarver | 1:d3ecb4ecdfda | 133 | alt.getAllDataRaw(&raw_data[0]); // May only be used on a Freescale platform, comment out for others |
JimCarver | 1:d3ecb4ecdfda | 134 | printf("MPL3115A2 Alt: %5.1f\r\n", print_AltimiterValue(&raw_data[0])); // May only be used on a Freescale platform, comment out for others |
JimCarver | 1:d3ecb4ecdfda | 135 | printf("MPL3115A2 Temp: %3.1f\r\n", print_TemperatureValue(&raw_data[3])); // May only be used on a Freescale platform, comment out for others |
JimCarver | 1:d3ecb4ecdfda | 136 | |
JimCarver | 1:d3ecb4ecdfda | 137 | printf("\r\n"); |
JimCarver | 1:d3ecb4ecdfda | 138 | |
JimCarver | 0:e5337522df6f | 139 | red = 1; |
JimCarver | 0:e5337522df6f | 140 | wait(0.5); |
JimCarver | 0:e5337522df6f | 141 | red = 0; |
JimCarver | 0:e5337522df6f | 142 | wait(0.5); |
JimCarver | 1:d3ecb4ecdfda | 143 | } |
JimCarver | 0:e5337522df6f | 144 | } |