An fully working IMU-Filter and Sensor drivers for the 10DOF-Board over I2C. All in one simple class. Include, calibrate sensors, call read, get angles. (3D Visualisation code for Python also included) Sensors: L3G4200D, ADXL345, HMC5883, BMP085

Dependencies:   mbed

Committer:
maetugr
Date:
Thu Aug 29 13:52:30 2013 +0000
Revision:
4:f62337b907e5
Parent:
1:798db5deb8b9
The Altitude Sensor is now implemented, it's really 10DOF now ;); TODO: Autocalibration

Who changed what in which revision?

UserRevisionLine numberNew contents of line
maetugr 0:3e7450f1a938 1 // by MaEtUgR
maetugr 0:3e7450f1a938 2
maetugr 0:3e7450f1a938 3 #ifndef I2C_Sensor_H
maetugr 0:3e7450f1a938 4 #define I2C_Sensor_H
maetugr 0:3e7450f1a938 5
maetugr 0:3e7450f1a938 6 #include "mbed.h"
maetugr 0:3e7450f1a938 7
maetugr 0:3e7450f1a938 8 class I2C_Sensor
maetugr 0:3e7450f1a938 9 {
maetugr 0:3e7450f1a938 10 public:
maetugr 0:3e7450f1a938 11 I2C_Sensor(PinName sda, PinName scl, char address);
maetugr 0:3e7450f1a938 12
maetugr 0:3e7450f1a938 13 float data[3]; // where the measured data is saved
maetugr 0:3e7450f1a938 14 virtual void read() = 0; // read all axis from register to array data
maetugr 0:3e7450f1a938 15 //TODO: virtual void calibrate() = 0; // calibrate the sensor and if desired write calibration values to a file
maetugr 0:3e7450f1a938 16
maetugr 0:3e7450f1a938 17 protected:
maetugr 0:3e7450f1a938 18 // Calibration
maetugr 0:3e7450f1a938 19 void saveCalibrationValues(float values[], int size, char * filename);
maetugr 0:3e7450f1a938 20 void loadCalibrationValues(float values[], int size, char * filename);
maetugr 0:3e7450f1a938 21
maetugr 0:3e7450f1a938 22 // I2C functions
maetugr 0:3e7450f1a938 23 char readRegister(char reg);
maetugr 0:3e7450f1a938 24 void writeRegister(char reg, char data);
maetugr 0:3e7450f1a938 25 void readMultiRegister(char reg, char* output, int size);
maetugr 0:3e7450f1a938 26
maetugr 0:3e7450f1a938 27 // raw data and function to measure it
maetugr 4:f62337b907e5 28 short raw[3];
maetugr 0:3e7450f1a938 29 virtual void readraw() = 0;
maetugr 0:3e7450f1a938 30
maetugr 0:3e7450f1a938 31 private:
maetugr 4:f62337b907e5 32 I2C i2c; // original mbed I2C-library just to initialise the control registers
maetugr 0:3e7450f1a938 33 char i2c_address; // address
maetugr 0:3e7450f1a938 34
maetugr 0:3e7450f1a938 35 LocalFileSystem local; // file access to save calibration values
maetugr 0:3e7450f1a938 36 };
maetugr 0:3e7450f1a938 37
maetugr 1:798db5deb8b9 38 #endif