Jatin Sharma
/
RaheeNew
RaheeNew
Fork of Adafruit9-DOf by
Source/main.cpp@0:772bf4786416, 2015-03-21 (annotated)
- Committer:
- bmanga95
- Date:
- Sat Mar 21 12:33:05 2015 +0000
- Revision:
- 0:772bf4786416
First version
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bmanga95 | 0:772bf4786416 | 1 | #include "mbed.h" |
bmanga95 | 0:772bf4786416 | 2 | #define _MBED_ |
bmanga95 | 0:772bf4786416 | 3 | #include "Adafruit_9DOF.h" |
bmanga95 | 0:772bf4786416 | 4 | #include "Serial_base.h" |
bmanga95 | 0:772bf4786416 | 5 | |
bmanga95 | 0:772bf4786416 | 6 | |
bmanga95 | 0:772bf4786416 | 7 | |
bmanga95 | 0:772bf4786416 | 8 | /* Assign a unique ID to the sensors */ |
bmanga95 | 0:772bf4786416 | 9 | |
bmanga95 | 0:772bf4786416 | 10 | Adafruit_9DOF dof = Adafruit_9DOF(); |
bmanga95 | 0:772bf4786416 | 11 | |
bmanga95 | 0:772bf4786416 | 12 | Adafruit_LSM303_Accel_Unified accel = Adafruit_LSM303_Accel_Unified(30301); |
bmanga95 | 0:772bf4786416 | 13 | |
bmanga95 | 0:772bf4786416 | 14 | Adafruit_LSM303_Mag_Unified mag = Adafruit_LSM303_Mag_Unified(30302); |
bmanga95 | 0:772bf4786416 | 15 | |
bmanga95 | 0:772bf4786416 | 16 | |
bmanga95 | 0:772bf4786416 | 17 | /* Update this with the correct SLP for accurate altitude measurements */ |
bmanga95 | 0:772bf4786416 | 18 | |
bmanga95 | 0:772bf4786416 | 19 | float seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA; |
bmanga95 | 0:772bf4786416 | 20 | |
bmanga95 | 0:772bf4786416 | 21 | |
bmanga95 | 0:772bf4786416 | 22 | /************************************************************************** |
bmanga95 | 0:772bf4786416 | 23 | / |
bmanga95 | 0:772bf4786416 | 24 | / |
bmanga95 | 0:772bf4786416 | 25 | @brief Initialises all the sensors used by this example |
bmanga95 | 0:772bf4786416 | 26 | |
bmanga95 | 0:772bf4786416 | 27 | / |
bmanga95 | 0:772bf4786416 | 28 | **************************************************************************/ |
bmanga95 | 0:772bf4786416 | 29 | |
bmanga95 | 0:772bf4786416 | 30 | void initSensors() |
bmanga95 | 0:772bf4786416 | 31 | { |
bmanga95 | 0:772bf4786416 | 32 | |
bmanga95 | 0:772bf4786416 | 33 | if(!accel.begin()) |
bmanga95 | 0:772bf4786416 | 34 | { |
bmanga95 | 0:772bf4786416 | 35 | |
bmanga95 | 0:772bf4786416 | 36 | /* There was a problem detecting the LSM303 ... check your connections */ |
bmanga95 | 0:772bf4786416 | 37 | |
bmanga95 | 0:772bf4786416 | 38 | s_com->println(("Ooops, no LSM303 detected ... Check your wiring!")); |
bmanga95 | 0:772bf4786416 | 39 | |
bmanga95 | 0:772bf4786416 | 40 | while(1); |
bmanga95 | 0:772bf4786416 | 41 | |
bmanga95 | 0:772bf4786416 | 42 | } |
bmanga95 | 0:772bf4786416 | 43 | if(!mag.begin()) |
bmanga95 | 0:772bf4786416 | 44 | { |
bmanga95 | 0:772bf4786416 | 45 | |
bmanga95 | 0:772bf4786416 | 46 | /* There was a problem detecting the LSM303 ... check your connections */ |
bmanga95 | 0:772bf4786416 | 47 | |
bmanga95 | 0:772bf4786416 | 48 | s_com->println("Ooops, no LSM303 detected ... Check your wiring!"); |
bmanga95 | 0:772bf4786416 | 49 | |
bmanga95 | 0:772bf4786416 | 50 | while(1); |
bmanga95 | 0:772bf4786416 | 51 | |
bmanga95 | 0:772bf4786416 | 52 | } |
bmanga95 | 0:772bf4786416 | 53 | |
bmanga95 | 0:772bf4786416 | 54 | } |
bmanga95 | 0:772bf4786416 | 55 | /**************************************************************************/ |
bmanga95 | 0:772bf4786416 | 56 | |
bmanga95 | 0:772bf4786416 | 57 | |
bmanga95 | 0:772bf4786416 | 58 | |
bmanga95 | 0:772bf4786416 | 59 | /**************************************************************************/ |
bmanga95 | 0:772bf4786416 | 60 | |
bmanga95 | 0:772bf4786416 | 61 | void setup(void) |
bmanga95 | 0:772bf4786416 | 62 | { |
bmanga95 | 0:772bf4786416 | 63 | |
bmanga95 | 0:772bf4786416 | 64 | |
bmanga95 | 0:772bf4786416 | 65 | |
bmanga95 | 0:772bf4786416 | 66 | s_com->println(("Adafruit 9 DOF Pitch/Roll/Heading Example")); |
bmanga95 | 0:772bf4786416 | 67 | s_com->println(""); |
bmanga95 | 0:772bf4786416 | 68 | |
bmanga95 | 0:772bf4786416 | 69 | |
bmanga95 | 0:772bf4786416 | 70 | /* Initialise the sensors */ |
bmanga95 | 0:772bf4786416 | 71 | |
bmanga95 | 0:772bf4786416 | 72 | initSensors(); |
bmanga95 | 0:772bf4786416 | 73 | |
bmanga95 | 0:772bf4786416 | 74 | } |
bmanga95 | 0:772bf4786416 | 75 | |
bmanga95 | 0:772bf4786416 | 76 | |
bmanga95 | 0:772bf4786416 | 77 | /************************************************************************** |
bmanga95 | 0:772bf4786416 | 78 | / |
bmanga95 | 0:772bf4786416 | 79 | / |
bmanga95 | 0:772bf4786416 | 80 | @brief Constantly check the roll/pitch/heading/altitude/temperature |
bmanga95 | 0:772bf4786416 | 81 | |
bmanga95 | 0:772bf4786416 | 82 | **************************************************************************/ |
bmanga95 | 0:772bf4786416 | 83 | |
bmanga95 | 0:772bf4786416 | 84 | void loop(void) |
bmanga95 | 0:772bf4786416 | 85 | { |
bmanga95 | 0:772bf4786416 | 86 | |
bmanga95 | 0:772bf4786416 | 87 | sensors_event_t accel_event; |
bmanga95 | 0:772bf4786416 | 88 | |
bmanga95 | 0:772bf4786416 | 89 | sensors_event_t mag_event; |
bmanga95 | 0:772bf4786416 | 90 | |
bmanga95 | 0:772bf4786416 | 91 | sensors_vec_t orientation; |
bmanga95 | 0:772bf4786416 | 92 | |
bmanga95 | 0:772bf4786416 | 93 | |
bmanga95 | 0:772bf4786416 | 94 | /* Calculate pitch and roll from the raw accelerometer data */ |
bmanga95 | 0:772bf4786416 | 95 | |
bmanga95 | 0:772bf4786416 | 96 | accel.getEvent(&accel_event); |
bmanga95 | 0:772bf4786416 | 97 | |
bmanga95 | 0:772bf4786416 | 98 | if (dof.accelGetOrientation(&accel_event, &orientation)) |
bmanga95 | 0:772bf4786416 | 99 | { |
bmanga95 | 0:772bf4786416 | 100 | |
bmanga95 | 0:772bf4786416 | 101 | /* 'orientation' should have valid .roll and .pitch fields */ |
bmanga95 | 0:772bf4786416 | 102 | |
bmanga95 | 0:772bf4786416 | 103 | s_com->print(("Roll: ")); |
bmanga95 | 0:772bf4786416 | 104 | |
bmanga95 | 0:772bf4786416 | 105 | s_com->print(orientation.roll); |
bmanga95 | 0:772bf4786416 | 106 | |
bmanga95 | 0:772bf4786416 | 107 | s_com->print(("; ")); |
bmanga95 | 0:772bf4786416 | 108 | |
bmanga95 | 0:772bf4786416 | 109 | s_com->print(("Pitch: ")); |
bmanga95 | 0:772bf4786416 | 110 | |
bmanga95 | 0:772bf4786416 | 111 | |
bmanga95 | 0:772bf4786416 | 112 | s_com->print(orientation.pitch); |
bmanga95 | 0:772bf4786416 | 113 | |
bmanga95 | 0:772bf4786416 | 114 | s_com->print(("; ")); |
bmanga95 | 0:772bf4786416 | 115 | |
bmanga95 | 0:772bf4786416 | 116 | } |
bmanga95 | 0:772bf4786416 | 117 | |
bmanga95 | 0:772bf4786416 | 118 | |
bmanga95 | 0:772bf4786416 | 119 | /* Calculate the heading using the magnetometer */ |
bmanga95 | 0:772bf4786416 | 120 | |
bmanga95 | 0:772bf4786416 | 121 | mag.getEvent(&mag_event); |
bmanga95 | 0:772bf4786416 | 122 | |
bmanga95 | 0:772bf4786416 | 123 | if (dof.magGetOrientation(SENSOR_AXIS_Z, &mag_event, &orientation)) |
bmanga95 | 0:772bf4786416 | 124 | { |
bmanga95 | 0:772bf4786416 | 125 | |
bmanga95 | 0:772bf4786416 | 126 | /* 'orientation' should have valid .heading data now */ |
bmanga95 | 0:772bf4786416 | 127 | |
bmanga95 | 0:772bf4786416 | 128 | s_com->print(("Heading: ")); |
bmanga95 | 0:772bf4786416 | 129 | |
bmanga95 | 0:772bf4786416 | 130 | s_com->print(orientation.heading); |
bmanga95 | 0:772bf4786416 | 131 | |
bmanga95 | 0:772bf4786416 | 132 | s_com->print(("; ")); |
bmanga95 | 0:772bf4786416 | 133 | |
bmanga95 | 0:772bf4786416 | 134 | } |
bmanga95 | 0:772bf4786416 | 135 | |
bmanga95 | 0:772bf4786416 | 136 | |
bmanga95 | 0:772bf4786416 | 137 | s_com->println(("")); |
bmanga95 | 0:772bf4786416 | 138 | |
bmanga95 | 0:772bf4786416 | 139 | wait(0.1); |
bmanga95 | 0:772bf4786416 | 140 | |
bmanga95 | 0:772bf4786416 | 141 | } |
bmanga95 | 0:772bf4786416 | 142 | |
bmanga95 | 0:772bf4786416 | 143 | int main() |
bmanga95 | 0:772bf4786416 | 144 | { |
bmanga95 | 0:772bf4786416 | 145 | setup(); |
bmanga95 | 0:772bf4786416 | 146 | while(1) |
bmanga95 | 0:772bf4786416 | 147 | loop(); |
bmanga95 | 0:772bf4786416 | 148 | } |