ECE 4180 Team iBox

Dependencies:   LSM9DS0 mbed

Fork of 4180_LSM9DS0_lab by Allen Wild

Committer:
Ratchapong
Date:
Fri May 01 18:37:17 2015 +0000
Revision:
6:5fd5ddcdca1c
Parent:
4:a9e3007530a7
MBED3

Who changed what in which revision?

UserRevisionLine numberNew 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 }