Added BNO080Wheelchair.h

Dependents:   BNO080_program wheelchaircontrol8 Version1-9 BNO080_program

Committer:
t1jain
Date:
Tue Jul 30 18:33:45 2019 +0000
Revision:
10:9275e6f7bf1b
Parent:
9:a12af7cb3c6d
Child:
11:dbe6d8d0ceb1
Updated

Who changed what in which revision?

UserRevisionLine numberNew contents of line
t1jain 9:a12af7cb3c6d 1 #ifndef BNO080Wheelchair_H
t1jain 9:a12af7cb3c6d 2 #define BNO080Wheelchair_H
t1jain 9:a12af7cb3c6d 3
t1jain 10:9275e6f7bf1b 4 //#include "filter.h"
t1jain 10:9275e6f7bf1b 5 #include "math.h"
t1jain 10:9275e6f7bf1b 6 #include "BNO080.h"
t1jain 9:a12af7cb3c6d 7
t1jain 9:a12af7cb3c6d 8 #define PI 3.141593
t1jain 9:a12af7cb3c6d 9
t1jain 10:9275e6f7bf1b 10 #define SDA D4
t1jain 10:9275e6f7bf1b 11 #define SCL D5
t1jain 10:9275e6f7bf1b 12 #define INT_PIN D12 // Change once actually connected
t1jain 10:9275e6f7bf1b 13 #define RST_PIN D10 // Change once actually connected
t1jain 10:9275e6f7bf1b 14
t1jain 9:a12af7cb3c6d 15 #define SAMPLEFREQ 50
t1jain 9:a12af7cb3c6d 16 #define CAL_TIME 3
t1jain 9:a12af7cb3c6d 17
t1jain 9:a12af7cb3c6d 18 class BNO080Wheelchair {
t1jain 9:a12af7cb3c6d 19 public:
t1jain 9:a12af7cb3c6d 20 //The constructor for this class
t1jain 10:9275e6f7bf1b 21 //BNO080Wheelchair(Serial* out, Timer* time);
t1jain 10:9275e6f7bf1b 22 //BNO080Wheelchair(PinName sda_pin, PinName scl_pin, Serial* out, Timer* time);
t1jain 10:9275e6f7bf1b 23 BNO080Wheelchair(Serial *debugPort, PinName sdaPin,
t1jain 10:9275e6f7bf1b 24 PinName sclPin, PinName intPin, PinName rstPin,
t1jain 10:9275e6f7bf1b 25 uint8_t i2cAddress, int i2cPortpeed);
t1jain 10:9275e6f7bf1b 26
t1jain 9:a12af7cb3c6d 27 //Set up the IMU, check if it connects
t1jain 9:a12af7cb3c6d 28 void setup();
t1jain 9:a12af7cb3c6d 29
t1jain 10:9275e6f7bf1b 30 //Get the x-component of the linear acceleration
t1jain 9:a12af7cb3c6d 31 double accel_x();
t1jain 9:a12af7cb3c6d 32
t1jain 10:9275e6f7bf1b 33 //Get the y-component of the linear acceleration
t1jain 9:a12af7cb3c6d 34 double accel_y();
t1jain 9:a12af7cb3c6d 35
t1jain 10:9275e6f7bf1b 36 //Get the z-component of the linear acceleration
t1jain 9:a12af7cb3c6d 37 double accel_z();
t1jain 9:a12af7cb3c6d 38
t1jain 9:a12af7cb3c6d 39 //Get the x-component of gyro, angular velocity
t1jain 9:a12af7cb3c6d 40 double gyro_x();
t1jain 9:a12af7cb3c6d 41
t1jain 9:a12af7cb3c6d 42 //Get the y-component of gyro, angular velocity
t1jain 9:a12af7cb3c6d 43 double gyro_y();
t1jain 9:a12af7cb3c6d 44
t1jain 9:a12af7cb3c6d 45 //Get the z-component of gyro, angular velocity
t1jain 9:a12af7cb3c6d 46 double gyro_z();
t1jain 9:a12af7cb3c6d 47
t1jain 9:a12af7cb3c6d 48 //Magnometer to find angle relative to North to compare to gyroscope
t1jain 9:a12af7cb3c6d 49 //double angle_north();
t1jain 9:a12af7cb3c6d 50
t1jain 9:a12af7cb3c6d 51 //Get the YAW, or angle (theta), direction facing
t1jain 9:a12af7cb3c6d 52 double yaw();
t1jain 9:a12af7cb3c6d 53
t1jain 9:a12af7cb3c6d 54 //Get the pitch, (Up and down component)
t1jain 9:a12af7cb3c6d 55 double pitch();
t1jain 9:a12af7cb3c6d 56
t1jain 9:a12af7cb3c6d 57 //Get the roll, the tilt
t1jain 9:a12af7cb3c6d 58 double roll();
t1jain 10:9275e6f7bf1b 59
t1jain 10:9275e6f7bf1b 60 //Get angle from North
t1jain 10:9275e6f7bf1b 61 double compass();
t1jain 9:a12af7cb3c6d 62
t1jain 9:a12af7cb3c6d 63 BNO080* imu; //The IMU we're testing from, MPU6050
t1jain 9:a12af7cb3c6d 64
t1jain 9:a12af7cb3c6d 65 private:
t1jain 9:a12af7cb3c6d 66 Serial* usb; //the connection port
t1jain 9:a12af7cb3c6d 67 Timer* t;//to calculate the time
t1jain 9:a12af7cb3c6d 68 float accelData[3]; // stores the angular acceleration component
t1jain 9:a12af7cb3c6d 69 float gyroData[3]; // stores the gyro data x,y,z
t1jain 9:a12af7cb3c6d 70 float* accelD; // pointer that points to either accelData
t1jain 9:a12af7cb3c6d 71 float* gyroD; // ptr to the gyroData array
t1jain 10:9275e6f7bf1b 72 TVector3 gyroRotation;
t1jain 10:9275e6f7bf1b 73 TVector3 linearAcceleration;
t1jain 10:9275e6f7bf1b 74 TVector3 magField;
t1jain 9:a12af7cb3c6d 75
t1jain 9:a12af7cb3c6d 76 float angleData[3]; // contains the pitch, roll, yaw angle
t1jain 9:a12af7cb3c6d 77 float* angleD; // ptr to angleData array
t1jain 9:a12af7cb3c6d 78
t1jain 9:a12af7cb3c6d 79 void calibrate_yaw();
t1jain 9:a12af7cb3c6d 80
t1jain 9:a12af7cb3c6d 81 bool start;
t1jain 9:a12af7cb3c6d 82
t1jain 9:a12af7cb3c6d 83 };
t1jain 9:a12af7cb3c6d 84
t1jain 9:a12af7cb3c6d 85 #endif