
ECE 4180 Team iBox
Fork of 4180_LSM9DS0_lab by
main.cpp@6:5fd5ddcdca1c, 2015-05-01 (annotated)
- Committer:
- Ratchapong
- Date:
- Fri May 01 18:37:17 2015 +0000
- Revision:
- 6:5fd5ddcdca1c
- Parent:
- 4:a9e3007530a7
MBED3
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
aswild | 0:29ab304ca8ce | 1 | #include "LSM9DS0.h" |
Ratchapong | 6:5fd5ddcdca1c | 2 | #include <sstream> |
aswild | 0:29ab304ca8ce | 3 | #define LSM9DS0_XM_ADDR 0x1D // Would be 0x1E if SDO_XM is LOW |
aswild | 0:29ab304ca8ce | 4 | #define LSM9DS0_G_ADDR 0x6B // Would be 0x6A if SDO_G is LOW |
Ratchapong | 6:5fd5ddcdca1c | 5 | #include "mbed.h" |
aswild | 0:29ab304ca8ce | 6 | |
Ratchapong | 6:5fd5ddcdca1c | 7 | DigitalOut led1(LED1); |
Ratchapong | 6:5fd5ddcdca1c | 8 | DigitalOut led2(LED2); |
Ratchapong | 6:5fd5ddcdca1c | 9 | DigitalOut led3(LED3); |
Ratchapong | 6:5fd5ddcdca1c | 10 | DigitalOut led4(LED4); |
aswild | 0:29ab304ca8ce | 11 | |
aswild | 0:29ab304ca8ce | 12 | LSM9DS0 imu(p9, p10, LSM9DS0_G_ADDR, LSM9DS0_XM_ADDR); |
aswild | 1:ae1cefe9aa38 | 13 | Serial pc(USBTX, USBRX); |
aswild | 1:ae1cefe9aa38 | 14 | |
Ratchapong | 6:5fd5ddcdca1c | 15 | void print_accelerometer(); |
Ratchapong | 6:5fd5ddcdca1c | 16 | void print_compass_data(); |
Ratchapong | 6:5fd5ddcdca1c | 17 | void print_temperature(); |
aswild | 0:29ab304ca8ce | 18 | |
Ratchapong | 6:5fd5ddcdca1c | 19 | int main() |
aswild | 0:29ab304ca8ce | 20 | { |
aswild | 0:29ab304ca8ce | 21 | uint16_t status = imu.begin(); |
aswild | 0:29ab304ca8ce | 22 | |
aswild | 0:29ab304ca8ce | 23 | //Make sure communication is working |
aswild | 0:29ab304ca8ce | 24 | pc.printf("LSM9DS0 WHO_AM_I's returned: 0x%X\n", status); |
Ratchapong | 6:5fd5ddcdca1c | 25 | pc.printf("------ LSM0DS0 Demo -----------\n"); |
Ratchapong | 6:5fd5ddcdca1c | 26 | while(1) { |
Ratchapong | 6:5fd5ddcdca1c | 27 | led1 = !led1; |
Ratchapong | 6:5fd5ddcdca1c | 28 | print_accelerometer(); |
Ratchapong | 6:5fd5ddcdca1c | 29 | print_compass_data(); |
Ratchapong | 6:5fd5ddcdca1c | 30 | print_temperature(); |
Ratchapong | 6:5fd5ddcdca1c | 31 | wait_ms(500); |
Ratchapong | 6:5fd5ddcdca1c | 32 | } |
aswild | 0:29ab304ca8ce | 33 | } |
aswild | 0:29ab304ca8ce | 34 | |
Ratchapong | 6:5fd5ddcdca1c | 35 | void print_accelerometer() |
Ratchapong | 6:5fd5ddcdca1c | 36 | { |
Ratchapong | 6:5fd5ddcdca1c | 37 | imu.readAccel(); |
Ratchapong | 6:5fd5ddcdca1c | 38 | pc.printf("A: x-axis: %d y-axis: %d z-axis: %d\n", imu.ax, imu.ay, imu.az); |
Ratchapong | 6:5fd5ddcdca1c | 39 | } |
Ratchapong | 6:5fd5ddcdca1c | 40 | void print_compass_data() |
aswild | 0:29ab304ca8ce | 41 | { |
Ratchapong | 6:5fd5ddcdca1c | 42 | imu.readMag(); |
Ratchapong | 6:5fd5ddcdca1c | 43 | float compassHeading = imu.calcHeading(); |
Ratchapong | 6:5fd5ddcdca1c | 44 | std::string direction = ""; |
Ratchapong | 6:5fd5ddcdca1c | 45 | if (compassHeading > 22.5 & compassHeading <= 67.5) { |
Ratchapong | 6:5fd5ddcdca1c | 46 | direction = "NE"; |
Ratchapong | 6:5fd5ddcdca1c | 47 | } else if (compassHeading > 67.5 & compassHeading <= 112.5) { |
Ratchapong | 6:5fd5ddcdca1c | 48 | direction = "E"; |
Ratchapong | 6:5fd5ddcdca1c | 49 | } else if (compassHeading > 112.5 & compassHeading <= 157.5) { |
Ratchapong | 6:5fd5ddcdca1c | 50 | direction = "SE"; |
Ratchapong | 6:5fd5ddcdca1c | 51 | } else if (compassHeading > 157.5 & compassHeading <= 202.5) { |
Ratchapong | 6:5fd5ddcdca1c | 52 | direction = "S"; |
Ratchapong | 6:5fd5ddcdca1c | 53 | } else if (compassHeading > 202.5 & compassHeading <= 247.5) { |
Ratchapong | 6:5fd5ddcdca1c | 54 | direction = "SW"; |
Ratchapong | 6:5fd5ddcdca1c | 55 | } else if (compassHeading > 247.5 & compassHeading <= 292.5) { |
Ratchapong | 6:5fd5ddcdca1c | 56 | direction = "W"; |
Ratchapong | 6:5fd5ddcdca1c | 57 | } else if (compassHeading > 292.5 & compassHeading <= 337.5) { |
Ratchapong | 6:5fd5ddcdca1c | 58 | direction = "NW"; |
Ratchapong | 6:5fd5ddcdca1c | 59 | } else { |
Ratchapong | 6:5fd5ddcdca1c | 60 | direction = "N"; |
Ratchapong | 6:5fd5ddcdca1c | 61 | } |
Ratchapong | 6:5fd5ddcdca1c | 62 | pc.printf(direction.c_str()); |
Ratchapong | 6:5fd5ddcdca1c | 63 | pc.printf("\n"); |
Ratchapong | 6:5fd5ddcdca1c | 64 | pc.printf("Degree: %f\n", compassHeading); |
aswild | 0:29ab304ca8ce | 65 | |
Ratchapong | 6:5fd5ddcdca1c | 66 | |
aswild | 0:29ab304ca8ce | 67 | } |
Ratchapong | 6:5fd5ddcdca1c | 68 | void print_temperature() |
Ratchapong | 6:5fd5ddcdca1c | 69 | { |
Ratchapong | 6:5fd5ddcdca1c | 70 | imu.readTemp(); |
Ratchapong | 6:5fd5ddcdca1c | 71 | pc.printf("T: %f C\n", imu.temperature_c); |
Ratchapong | 6:5fd5ddcdca1c | 72 | } |