Marco Oehler / Mbed OS Lab7
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers IMU.h Source File

IMU.h

00001 /*
00002  * IMU.h
00003  * Copyright (c) 2020, ZHAW
00004  * All rights reserved.
00005  */
00006 
00007 #ifndef IMU_H_
00008 #define IMU_H_
00009 
00010 #include <cstdlib>
00011 #include <mbed.h>
00012 
00013 /**
00014  * This is a device driver class for the ST LSM9DS1 inertial measurement unit.
00015  */
00016 class IMU {
00017 
00018     public:
00019         
00020                     IMU(SPI& spi, DigitalOut& csAG, DigitalOut& csM);
00021         virtual     ~IMU();
00022         float       readAccelerationX();
00023         float       readAccelerationY();
00024         float       readAccelerationZ();
00025         float       readGyroX();
00026         float       readGyroY();
00027         float       readGyroZ();
00028         float       readMagnetometerX();
00029         float       readMagnetometerY();
00030         float       readMagnetometerZ();
00031         
00032     private:
00033         
00034         static const char   WHO_AM_I = 0x0F;
00035         static const char   CTRL_REG1_G = 0x10;
00036         static const char   CTRL_REG2_G = 0x11;
00037         static const char   CTRL_REG3_G = 0x12;
00038         static const char   OUT_X_L_G = 0x18;
00039         static const char   OUT_X_H_G = 0x19;
00040         static const char   OUT_Y_L_G = 0x1A;
00041         static const char   OUT_Y_H_G = 0x1B;
00042         static const char   OUT_Z_L_G = 0x1C;
00043         static const char   OUT_Z_H_G = 0x1D;
00044         static const char   CTRL_REG4 = 0x1E;
00045         static const char   CTRL_REG5_XL = 0x1F;
00046         static const char   CTRL_REG6_XL = 0x20;
00047         static const char   CTRL_REG7_XL = 0x21;
00048         static const char   CTRL_REG8 = 0x22;
00049         static const char   CTRL_REG9 = 0x23;
00050         static const char   CTRL_REG10 = 0x24;
00051         static const char   OUT_X_L_XL = 0x28;
00052         static const char   OUT_X_H_XL = 0x29;
00053         static const char   OUT_Y_L_XL = 0x2A;
00054         static const char   OUT_Y_H_XL = 0x2B;
00055         static const char   OUT_Z_L_XL = 0x2C;
00056         static const char   OUT_Z_H_XL = 0x2D;
00057         
00058         static const char   WHO_AM_I_M = 0x0F;
00059         static const char   CTRL_REG1_M = 0x20;
00060         static const char   CTRL_REG2_M = 0x21;
00061         static const char   CTRL_REG3_M = 0x22;
00062         static const char   CTRL_REG4_M = 0x23;
00063         static const char   CTRL_REG5_M = 0x24;
00064         static const char   OUT_X_L_M = 0x28;
00065         static const char   OUT_X_H_M = 0x29;
00066         static const char   OUT_Y_L_M = 0x2A;
00067         static const char   OUT_Y_H_M = 0x2B;
00068         static const char   OUT_Z_L_M = 0x2C;
00069         static const char   OUT_Z_H_M = 0x2D;
00070         
00071         static const float  M_PI;   // the mathematical constant PI
00072         
00073         SPI&            spi;
00074         DigitalOut&     csAG;
00075         DigitalOut&     csM;
00076         Mutex           mutex;
00077         
00078         void    writeRegister(DigitalOut& cs, char address, char value);
00079         char    readRegister(DigitalOut& cs, char address);
00080 };
00081 
00082 #endif /* IMU_H_ */
00083