ROME2 Lab7
Embed:
(wiki syntax)
Show/hide line numbers
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
Generated on Fri Jul 29 2022 01:28:48 by
1.7.2