Nim leo niiiim

Committer:
Kiwicjam
Date:
Fri May 11 12:21:19 2018 +0000
Revision:
0:da791f233257
start of rome2 p5;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kiwicjam 0:da791f233257 1 /*
Kiwicjam 0:da791f233257 2 * IMU.h
Kiwicjam 0:da791f233257 3 * Copyright (c) 2018, ZHAW
Kiwicjam 0:da791f233257 4 * All rights reserved.
Kiwicjam 0:da791f233257 5 */
Kiwicjam 0:da791f233257 6
Kiwicjam 0:da791f233257 7 #ifndef IMU_H_
Kiwicjam 0:da791f233257 8 #define IMU_H_
Kiwicjam 0:da791f233257 9
Kiwicjam 0:da791f233257 10 #include <cstdlib>
Kiwicjam 0:da791f233257 11 #include <mbed.h>
Kiwicjam 0:da791f233257 12
Kiwicjam 0:da791f233257 13 /**
Kiwicjam 0:da791f233257 14 * This is a device driver class for the ST LSM9DS0 inertial measurement unit.
Kiwicjam 0:da791f233257 15 */
Kiwicjam 0:da791f233257 16 class IMU {
Kiwicjam 0:da791f233257 17
Kiwicjam 0:da791f233257 18 public:
Kiwicjam 0:da791f233257 19
Kiwicjam 0:da791f233257 20 IMU(SPI& spi, DigitalOut& csG, DigitalOut& csXM);
Kiwicjam 0:da791f233257 21 virtual ~IMU();
Kiwicjam 0:da791f233257 22 float readGyroX();
Kiwicjam 0:da791f233257 23 float readGyroY();
Kiwicjam 0:da791f233257 24 float readGyroZ();
Kiwicjam 0:da791f233257 25 float readAccelerationX();
Kiwicjam 0:da791f233257 26 float readAccelerationY();
Kiwicjam 0:da791f233257 27 float readAccelerationZ();
Kiwicjam 0:da791f233257 28 float readMagnetometerX();
Kiwicjam 0:da791f233257 29 float readMagnetometerY();
Kiwicjam 0:da791f233257 30 float readMagnetometerZ();
Kiwicjam 0:da791f233257 31 float readHeading();
Kiwicjam 0:da791f233257 32
Kiwicjam 0:da791f233257 33 private:
Kiwicjam 0:da791f233257 34
Kiwicjam 0:da791f233257 35 static const char WHO_AM_I_G = 0x0F;
Kiwicjam 0:da791f233257 36 static const char CTRL_REG1_G = 0x20;
Kiwicjam 0:da791f233257 37 static const char OUT_X_L_G = 0x28;
Kiwicjam 0:da791f233257 38 static const char OUT_X_H_G = 0x29;
Kiwicjam 0:da791f233257 39 static const char OUT_Y_L_G = 0x2A;
Kiwicjam 0:da791f233257 40 static const char OUT_Y_H_G = 0x2B;
Kiwicjam 0:da791f233257 41 static const char OUT_Z_L_G = 0x2C;
Kiwicjam 0:da791f233257 42 static const char OUT_Z_H_G = 0x2D;
Kiwicjam 0:da791f233257 43
Kiwicjam 0:da791f233257 44 static const char WHO_AM_I_XM = 0x0F;
Kiwicjam 0:da791f233257 45
Kiwicjam 0:da791f233257 46 static const char INT_CTRL_REG_M = 0x12;
Kiwicjam 0:da791f233257 47 static const char CTRL_REG0_XM = 0x1F;
Kiwicjam 0:da791f233257 48 static const char CTRL_REG1_XM = 0x20;
Kiwicjam 0:da791f233257 49 static const char CTRL_REG2_XM = 0x21;
Kiwicjam 0:da791f233257 50 static const char CTRL_REG3_XM = 0x22;
Kiwicjam 0:da791f233257 51 static const char CTRL_REG4_XM = 0x23;
Kiwicjam 0:da791f233257 52 static const char CTRL_REG5_XM = 0x24;
Kiwicjam 0:da791f233257 53 static const char CTRL_REG6_XM = 0x25;
Kiwicjam 0:da791f233257 54 static const char CTRL_REG7_XM = 0x26;
Kiwicjam 0:da791f233257 55
Kiwicjam 0:da791f233257 56 static const char OUT_X_L_A = 0x28;
Kiwicjam 0:da791f233257 57 static const char OUT_X_H_A = 0x29;
Kiwicjam 0:da791f233257 58 static const char OUT_Y_L_A = 0x2A;
Kiwicjam 0:da791f233257 59 static const char OUT_Y_H_A = 0x2B;
Kiwicjam 0:da791f233257 60 static const char OUT_Z_L_A = 0x2C;
Kiwicjam 0:da791f233257 61 static const char OUT_Z_H_A = 0x2D;
Kiwicjam 0:da791f233257 62
Kiwicjam 0:da791f233257 63 static const float PI;
Kiwicjam 0:da791f233257 64
Kiwicjam 0:da791f233257 65 SPI& spi;
Kiwicjam 0:da791f233257 66 DigitalOut& csG;
Kiwicjam 0:da791f233257 67 DigitalOut& csXM;
Kiwicjam 0:da791f233257 68
Kiwicjam 0:da791f233257 69 void writeRegister(DigitalOut& cs, char address, char value);
Kiwicjam 0:da791f233257 70 char readRegister(DigitalOut& cs, char address);
Kiwicjam 0:da791f233257 71 };
Kiwicjam 0:da791f233257 72
Kiwicjam 0:da791f233257 73 #endif /* IMU_H_ */