Revised for integration

Dependencies:   QEI2 chair_BNO055 PID VL53L1X_Filter

Committer:
ryanlin97
Date:
Thu Aug 09 16:36:46 2018 +0000
Revision:
12:921488918749
Parent:
11:d14a1f7f1297
Child:
14:9caca9fde9b0
incorporated pid and encoder;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ryanlin97 0:fc0c4a184482 1 #ifndef wheelchair
ryanlin97 0:fc0c4a184482 2 #define wheelchair
ryanlin97 0:fc0c4a184482 3
ryanlin97 11:d14a1f7f1297 4 #include "chair_BNO055.h"
ryanlin97 12:921488918749 5 #include "PID_v1.h"
ryanlin97 12:921488918749 6 #include "QEI.h"
ryanlin97 12:921488918749 7
ryanlin97 11:d14a1f7f1297 8 //#include "chair_MPU9250.h"
ryanlin97 0:fc0c4a184482 9
ryanlin97 11:d14a1f7f1297 10 #define turn_precision 10
ryanlin97 0:fc0c4a184482 11 #define def (2.5f/3.3f)
ryanlin97 12:921488918749 12 #define high 3.3f/3.3f
ryanlin97 3:a5e71bfdb492 13 #define offset .02f
ryanlin97 3:a5e71bfdb492 14 #define low (1.7f/3.3f)
ryanlin97 10:e5463c11e0a0 15 #define process .1
ryanlin97 3:a5e71bfdb492 16 #define xDir D12 //top right two pins
ryanlin97 0:fc0c4a184482 17 #define yDir D13 //top left two pins
ryanlin97 12:921488918749 18 #define Encoder1 D0
ryanlin97 12:921488918749 19 #define Encoder2 D1
ryanlin97 12:921488918749 20 #define EncoderReadRate 1200
ryanlin97 12:921488918749 21 #define Diameter 31.75
ryanlin97 12:921488918749 22 /** Wheelchair class
ryanlin97 12:921488918749 23 * Used for controlling the smart wheelchair
ryanlin97 12:921488918749 24 */
ryanlin97 0:fc0c4a184482 25 class Wheelchair
ryanlin97 0:fc0c4a184482 26 {
ryanlin97 0:fc0c4a184482 27 public:
ryanlin97 12:921488918749 28 /** Create Wheelchair Object with x,y pin for analog dc output
ryanlin97 12:921488918749 29 * serial for printout, and timer
ryanlin97 12:921488918749 30 */
ryanlin97 7:5e38d43fbce3 31 Wheelchair(PinName xPin, PinName yPin, Serial* pc, Timer* time);
ryanlin97 12:921488918749 32
ryanlin97 12:921488918749 33 /** move using the joystick */
ryanlin97 3:a5e71bfdb492 34 void move(float x_coor, float y_coor);
ryanlin97 12:921488918749 35
ryanlin97 12:921488918749 36 /* turn right a certain amount of degrees (overshoots)*/
ryanlin97 11:d14a1f7f1297 37 double turn_right(int deg);
ryanlin97 12:921488918749 38
ryanlin97 12:921488918749 39 /* turn left a certain amount of degrees (overshoots)*/
ryanlin97 11:d14a1f7f1297 40 double turn_left(int deg);
ryanlin97 12:921488918749 41
ryanlin97 12:921488918749 42 /* turn right a certain amount of degrees using PID*/
ryanlin97 12:921488918749 43 void pid_right(int deg);
ryanlin97 12:921488918749 44
ryanlin97 12:921488918749 45 /* turn left a certain amount of degrees using PID*/
ryanlin97 12:921488918749 46 void pid_left(int deg);
ryanlin97 12:921488918749 47
ryanlin97 12:921488918749 48 /* turning function that turns any direction */
ryanlin97 11:d14a1f7f1297 49 void turn(int deg);
ryanlin97 12:921488918749 50
ryanlin97 12:921488918749 51 /* drive the wheelchair forward */
ryanlin97 1:c0beadca1617 52 void forward();
ryanlin97 12:921488918749 53
ryanlin97 12:921488918749 54 /* drive the wheelchair backward*/
ryanlin97 1:c0beadca1617 55 void backward();
ryanlin97 12:921488918749 56
ryanlin97 12:921488918749 57 /* turn the wheelchair right*/
ryanlin97 1:c0beadca1617 58 void right();
ryanlin97 12:921488918749 59
ryanlin97 12:921488918749 60 /* turn the wheelchair left*/
ryanlin97 1:c0beadca1617 61 void left();
ryanlin97 12:921488918749 62
ryanlin97 12:921488918749 63 /* stop the wheelchair*/
ryanlin97 1:c0beadca1617 64 void stop();
ryanlin97 12:921488918749 65
ryanlin97 12:921488918749 66 /* function to get imu data*/
ryanlin97 11:d14a1f7f1297 67 void compass_thread();
ryanlin97 12:921488918749 68 float getDistance();
ryanlin97 12:921488918749 69 void resetDistance();
ryanlin97 12:921488918749 70 void pid_turn(int deg);
ryanlin97 12:921488918749 71
ryanlin97 1:c0beadca1617 72 private:
ryanlin97 3:a5e71bfdb492 73 PwmOut* x;
ryanlin97 3:a5e71bfdb492 74 PwmOut* y;
ryanlin97 12:921488918749 75 chair_BNO055* imu;
ryanlin97 7:5e38d43fbce3 76 Serial* out;
ryanlin97 11:d14a1f7f1297 77 Timer* ti;
ryanlin97 12:921488918749 78 QEI* wheel;
ryanlin97 1:c0beadca1617 79
ryanlin97 0:fc0c4a184482 80 };
ryanlin97 0:fc0c4a184482 81 #endif