Added BNO080Wheelchair.h

Dependents:   BNO080_program wheelchaircontrol8 Version1-9 BNO080_program

Committer:
t1jain
Date:
Mon Jul 29 18:24:40 2019 +0000
Revision:
9:a12af7cb3c6d
Child:
10:9275e6f7bf1b
Added BNO080Wheelchair.h

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 9:a12af7cb3c6d 4 #include "filter.h"
t1jain 9:a12af7cb3c6d 5 #include "math.h"
t1jain 9:a12af7cb3c6d 6 #include <BNO080.h>
t1jain 9:a12af7cb3c6d 7
t1jain 9:a12af7cb3c6d 8 #define PI 3.141593
t1jain 9:a12af7cb3c6d 9
t1jain 9:a12af7cb3c6d 10 #define SDA PB_9
t1jain 9:a12af7cb3c6d 11 #define SCL PB_8
t1jain 9:a12af7cb3c6d 12 #define SAMPLEFREQ 50
t1jain 9:a12af7cb3c6d 13 #define CAL_TIME 3
t1jain 9:a12af7cb3c6d 14
t1jain 9:a12af7cb3c6d 15 class BNO080Wheelchair {
t1jain 9:a12af7cb3c6d 16 public:
t1jain 9:a12af7cb3c6d 17 //The constructor for this class
t1jain 9:a12af7cb3c6d 18 BNO080(Serial* out, Timer* time);
t1jain 9:a12af7cb3c6d 19 BNO080(PinName sda_pin, PinName scl_pin, Serial* out, Timer* time);
t1jain 9:a12af7cb3c6d 20
t1jain 9:a12af7cb3c6d 21 //Set up the IMU, check if it connects
t1jain 9:a12af7cb3c6d 22 void setup();
t1jain 9:a12af7cb3c6d 23
t1jain 9:a12af7cb3c6d 24 //Get the x-component of the angular acceleration
t1jain 9:a12af7cb3c6d 25 double accel_x();
t1jain 9:a12af7cb3c6d 26
t1jain 9:a12af7cb3c6d 27 //Get the y-component of the angular acceleration
t1jain 9:a12af7cb3c6d 28 double accel_y();
t1jain 9:a12af7cb3c6d 29
t1jain 9:a12af7cb3c6d 30 //Get the z-component of the angular acceleration
t1jain 9:a12af7cb3c6d 31 double accel_z();
t1jain 9:a12af7cb3c6d 32
t1jain 9:a12af7cb3c6d 33 //Get the x-component of gyro, angular velocity
t1jain 9:a12af7cb3c6d 34 double gyro_x();
t1jain 9:a12af7cb3c6d 35
t1jain 9:a12af7cb3c6d 36 //Get the y-component of gyro, angular velocity
t1jain 9:a12af7cb3c6d 37 double gyro_y();
t1jain 9:a12af7cb3c6d 38
t1jain 9:a12af7cb3c6d 39 //Get the z-component of gyro, angular velocity
t1jain 9:a12af7cb3c6d 40 double gyro_z();
t1jain 9:a12af7cb3c6d 41
t1jain 9:a12af7cb3c6d 42 //Magnometer to find angle relative to North to compare to gyroscope
t1jain 9:a12af7cb3c6d 43 //double angle_north();
t1jain 9:a12af7cb3c6d 44
t1jain 9:a12af7cb3c6d 45 //Get the YAW, or angle (theta), direction facing
t1jain 9:a12af7cb3c6d 46 double yaw();
t1jain 9:a12af7cb3c6d 47
t1jain 9:a12af7cb3c6d 48 //Get the pitch, (Up and down component)
t1jain 9:a12af7cb3c6d 49 double pitch();
t1jain 9:a12af7cb3c6d 50
t1jain 9:a12af7cb3c6d 51 //Get the roll, the tilt
t1jain 9:a12af7cb3c6d 52 double roll();
t1jain 9:a12af7cb3c6d 53
t1jain 9:a12af7cb3c6d 54 BNO080* imu; //The IMU we're testing from, MPU6050
t1jain 9:a12af7cb3c6d 55
t1jain 9:a12af7cb3c6d 56 private:
t1jain 9:a12af7cb3c6d 57 Serial* usb; //the connection port
t1jain 9:a12af7cb3c6d 58 Timer* t;//to calculate the time
t1jain 9:a12af7cb3c6d 59 float accelData[3]; // stores the angular acceleration component
t1jain 9:a12af7cb3c6d 60 float gyroData[3]; // stores the gyro data x,y,z
t1jain 9:a12af7cb3c6d 61 float* accelD; // pointer that points to either accelData
t1jain 9:a12af7cb3c6d 62 float* gyroD; // ptr to the gyroData array
t1jain 9:a12af7cb3c6d 63
t1jain 9:a12af7cb3c6d 64 float angleData[3]; // contains the pitch, roll, yaw angle
t1jain 9:a12af7cb3c6d 65 float* angleD; // ptr to angleData array
t1jain 9:a12af7cb3c6d 66
t1jain 9:a12af7cb3c6d 67 void calibrate_yaw();
t1jain 9:a12af7cb3c6d 68
t1jain 9:a12af7cb3c6d 69 bool start;
t1jain 9:a12af7cb3c6d 70
t1jain 9:a12af7cb3c6d 71 };
t1jain 9:a12af7cb3c6d 72
t1jain 9:a12af7cb3c6d 73 #endif