Revised for integration

Dependencies:   QEI2 chair_BNO055 PID VL53L1X_Filter

Committer:
ryanlin97
Date:
Mon Aug 13 18:22:54 2018 +0000
Revision:
14:9caca9fde9b0
Parent:
12:921488918749
Child:
15:ddd61f6dc5ab
updated for small board;

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 14:9caca9fde9b0 16
ryanlin97 14:9caca9fde9b0 17 /* for big mbed board
ryanlin97 3:a5e71bfdb492 18 #define xDir D12 //top right two pins
ryanlin97 0:fc0c4a184482 19 #define yDir D13 //top left two pins
ryanlin97 12:921488918749 20 #define Encoder1 D0
ryanlin97 12:921488918749 21 #define Encoder2 D1
ryanlin97 14:9caca9fde9b0 22 */
ryanlin97 14:9caca9fde9b0 23
ryanlin97 14:9caca9fde9b0 24 //for small mbed board
ryanlin97 14:9caca9fde9b0 25 #define xDir D9
ryanlin97 14:9caca9fde9b0 26 #define yDir D10
ryanlin97 14:9caca9fde9b0 27 #define Encoder1 D7
ryanlin97 14:9caca9fde9b0 28 #define Encoder2 D8
ryanlin97 14:9caca9fde9b0 29
ryanlin97 12:921488918749 30 #define EncoderReadRate 1200
ryanlin97 12:921488918749 31 #define Diameter 31.75
ryanlin97 12:921488918749 32 /** Wheelchair class
ryanlin97 12:921488918749 33 * Used for controlling the smart wheelchair
ryanlin97 12:921488918749 34 */
ryanlin97 0:fc0c4a184482 35 class Wheelchair
ryanlin97 0:fc0c4a184482 36 {
ryanlin97 0:fc0c4a184482 37 public:
ryanlin97 12:921488918749 38 /** Create Wheelchair Object with x,y pin for analog dc output
ryanlin97 12:921488918749 39 * serial for printout, and timer
ryanlin97 12:921488918749 40 */
ryanlin97 7:5e38d43fbce3 41 Wheelchair(PinName xPin, PinName yPin, Serial* pc, Timer* time);
ryanlin97 12:921488918749 42
ryanlin97 12:921488918749 43 /** move using the joystick */
ryanlin97 3:a5e71bfdb492 44 void move(float x_coor, float y_coor);
ryanlin97 12:921488918749 45
ryanlin97 12:921488918749 46 /* turn right a certain amount of degrees (overshoots)*/
ryanlin97 11:d14a1f7f1297 47 double turn_right(int deg);
ryanlin97 12:921488918749 48
ryanlin97 12:921488918749 49 /* turn left a certain amount of degrees (overshoots)*/
ryanlin97 11:d14a1f7f1297 50 double turn_left(int deg);
ryanlin97 12:921488918749 51
ryanlin97 12:921488918749 52 /* turn right a certain amount of degrees using PID*/
ryanlin97 12:921488918749 53 void pid_right(int deg);
ryanlin97 12:921488918749 54
ryanlin97 12:921488918749 55 /* turn left a certain amount of degrees using PID*/
ryanlin97 12:921488918749 56 void pid_left(int deg);
ryanlin97 12:921488918749 57
ryanlin97 12:921488918749 58 /* turning function that turns any direction */
ryanlin97 11:d14a1f7f1297 59 void turn(int deg);
ryanlin97 12:921488918749 60
ryanlin97 12:921488918749 61 /* drive the wheelchair forward */
ryanlin97 1:c0beadca1617 62 void forward();
ryanlin97 12:921488918749 63
ryanlin97 12:921488918749 64 /* drive the wheelchair backward*/
ryanlin97 1:c0beadca1617 65 void backward();
ryanlin97 12:921488918749 66
ryanlin97 12:921488918749 67 /* turn the wheelchair right*/
ryanlin97 1:c0beadca1617 68 void right();
ryanlin97 12:921488918749 69
ryanlin97 12:921488918749 70 /* turn the wheelchair left*/
ryanlin97 1:c0beadca1617 71 void left();
ryanlin97 12:921488918749 72
ryanlin97 12:921488918749 73 /* stop the wheelchair*/
ryanlin97 1:c0beadca1617 74 void stop();
ryanlin97 12:921488918749 75
ryanlin97 12:921488918749 76 /* function to get imu data*/
ryanlin97 11:d14a1f7f1297 77 void compass_thread();
ryanlin97 12:921488918749 78 float getDistance();
ryanlin97 12:921488918749 79 void resetDistance();
ryanlin97 12:921488918749 80 void pid_turn(int deg);
ryanlin97 12:921488918749 81
ryanlin97 1:c0beadca1617 82 private:
ryanlin97 3:a5e71bfdb492 83 PwmOut* x;
ryanlin97 3:a5e71bfdb492 84 PwmOut* y;
ryanlin97 12:921488918749 85 chair_BNO055* imu;
ryanlin97 7:5e38d43fbce3 86 Serial* out;
ryanlin97 11:d14a1f7f1297 87 Timer* ti;
ryanlin97 12:921488918749 88 QEI* wheel;
ryanlin97 1:c0beadca1617 89
ryanlin97 0:fc0c4a184482 90 };
ryanlin97 0:fc0c4a184482 91 #endif