Port of Adafruit Arduino code

Dependencies:   mbed

Committer:
bmanga95
Date:
Sat Mar 21 12:33:05 2015 +0000
Revision:
0:772bf4786416
First version

Who changed what in which revision?

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