Implemented first Hangar-Service

Dependencies:   CalibrateMagneto QuaternionMath

Fork of SML2 by TobyRich GmbH

Committer:
uadhikari
Date:
Fri May 29 12:21:31 2015 +0000
Revision:
44:5483079fa156
Parent:
40:8e852115fe55
Gyro calibration and reset added and flag to check if calibrated

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pvaibhav 4:e759b8c756da 1 #ifndef _H_GYROSCOPE_H
pvaibhav 4:e759b8c756da 2 #define _H_GYROSCOPE_H
pvaibhav 4:e759b8c756da 3
pvaibhav 4:e759b8c756da 4 #include "I2CPeripheral.h"
pvaibhav 6:c12cea26842d 5 #include "Sensor.h"
pvaibhav 5:b9f2f62a8f90 6
pvaibhav 12:1632d7391453 7 class Gyroscope : public I2CPeripheral, public Sensor
pvaibhav 12:1632d7391453 8 {
pvaibhav 4:e759b8c756da 9 public:
uadhikari 44:5483079fa156 10 /* Flag to indicate if Gryoscope is calibrated or not */
uadhikari 44:5483079fa156 11 bool isCalibrated;
uadhikari 44:5483079fa156 12
pvaibhav 4:e759b8c756da 13 Gyroscope(I2C &i2c);
pvaibhav 12:1632d7391453 14
pvaibhav 5:b9f2f62a8f90 15 void handleInterrupt(void);
uadhikari 44:5483079fa156 16
uadhikari 44:5483079fa156 17 /**
uadhikari 44:5483079fa156 18 * Incrementally calculates the average noise offset
uadhikari 44:5483079fa156 19 * with every interrupt received from gyroscope
uadhikari 44:5483079fa156 20 * until the desired iteration is reached
uadhikari 44:5483079fa156 21 */
uadhikari 44:5483079fa156 22 void calibtrationInterrupt(void);
uadhikari 44:5483079fa156 23
pvaibhav 6:c12cea26842d 24 virtual void powerOff();
pvaibhav 6:c12cea26842d 25 virtual bool powerOn();
pvaibhav 6:c12cea26842d 26 virtual void start();
uadhikari 44:5483079fa156 27 virtual void stop();
uadhikari 44:5483079fa156 28
uadhikari 44:5483079fa156 29 /**
uadhikari 44:5483079fa156 30 * Returns raw x,y,z data from obtained from gyroscpe
uadhikari 44:5483079fa156 31 */
uadhikari 44:5483079fa156 32 virtual Vector3 uncalibrated_read();
uadhikari 44:5483079fa156 33
uadhikari 44:5483079fa156 34 /**
uadhikari 44:5483079fa156 35 * Returns calibrated x,y,z values from gyroscope
uadhikari 44:5483079fa156 36 * The offset calculated from calibration is added
uadhikari 44:5483079fa156 37 * to the raw data:
uadhikari 44:5483079fa156 38 * value = (rawValue + noiseOffset) * gyro_resolution
uadhikari 44:5483079fa156 39 */
pvaibhav 8:cba37530d480 40 virtual Vector3 read();
pvaibhav 40:8e852115fe55 41
uadhikari 44:5483079fa156 42 /**
uadhikari 44:5483079fa156 43 * Changes the interrupt handler of gyro
uadhikari 44:5483079fa156 44 * to calibrationInterrupt, which is responsible
uadhikari 44:5483079fa156 45 * for calculating noise offset
uadhikari 44:5483079fa156 46 */
uadhikari 44:5483079fa156 47 virtual void calibrate();
pvaibhav 40:8e852115fe55 48 volatile bool interruptSet;
uadhikari 44:5483079fa156 49
uadhikari 44:5483079fa156 50 /* Sets offset to zero*/
uadhikari 44:5483079fa156 51 virtual void reset();
uadhikari 44:5483079fa156 52
pvaibhav 5:b9f2f62a8f90 53 protected:
uadhikari 44:5483079fa156 54 int numSamples; //Counter for calibration
uadhikari 44:5483079fa156 55 Vector3 offset; //Gyroscope noise compensation offset
uadhikari 44:5483079fa156 56 InterruptIn int1; //Interrupt from the gyroscope
pvaibhav 32:d37447aec6b4 57 InterruptIn int2;
pvaibhav 40:8e852115fe55 58 size_t tick;
pvaibhav 4:e759b8c756da 59 };
pvaibhav 4:e759b8c756da 60
pvaibhav 4:e759b8c756da 61 #endif//_H_GYROSCOPE_H