pull from the DC_Stepper_Motor program and set up as library

Dependencies:  

Committer:
howanglam3
Date:
Wed May 19 09:49:44 2021 +0000
Revision:
0:80182fb5ee8f
change the location of private and public;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
howanglam3 0:80182fb5ee8f 1 #include "mbed.h"
howanglam3 0:80182fb5ee8f 2 #include "QEI.h"
howanglam3 0:80182fb5ee8f 3
howanglam3 0:80182fb5ee8f 4 #ifndef DC_MOTOR_CONTROLLER_H
howanglam3 0:80182fb5ee8f 5 #define DC_MOTOR_CONTROLLER_H
howanglam3 0:80182fb5ee8f 6
howanglam3 0:80182fb5ee8f 7 class DC_Motor_Controller {
howanglam3 0:80182fb5ee8f 8
howanglam3 0:80182fb5ee8f 9 public:
howanglam3 0:80182fb5ee8f 10 DigitalOut out1, out2; // Motor direction control pin 2
howanglam3 0:80182fb5ee8f 11 DC_Motor_Controller(PinName out1_p, PinName out2_p, PinName in1_p, PinName in2_p, int PPR) : out1(out1_p), out2(out2_p), dc_motor(in1_p, in2_p, NC, PPR)
howanglam3 0:80182fb5ee8f 12 {
howanglam3 0:80182fb5ee8f 13 }
howanglam3 0:80182fb5ee8f 14
howanglam3 0:80182fb5ee8f 15 void reset(){ // Setting home point for increment encoder
howanglam3 0:80182fb5ee8f 16 /*while (home_button == 0){ // Continue to turn clockwise until home button pressed
howanglam3 0:80182fb5ee8f 17 out1 = 1;
howanglam3 0:80182fb5ee8f 18 out2 = 0;
howanglam3 0:80182fb5ee8f 19 }*/
howanglam3 0:80182fb5ee8f 20 out1 = out2 = 0;
howanglam3 0:80182fb5ee8f 21 dc_motor.reset(); // Reset pulse_
howanglam3 0:80182fb5ee8f 22 //wait(1);
howanglam3 0:80182fb5ee8f 23 };
howanglam3 0:80182fb5ee8f 24
howanglam3 0:80182fb5ee8f 25 void move_angle(int angle){ // move for relative distance
howanglam3 0:80182fb5ee8f 26 reset();
howanglam3 0:80182fb5ee8f 27 goto_angle(angle);
howanglam3 0:80182fb5ee8f 28 reset();
howanglam3 0:80182fb5ee8f 29 };
howanglam3 0:80182fb5ee8f 30
howanglam3 0:80182fb5ee8f 31 private:
howanglam3 0:80182fb5ee8f 32 QEI dc_motor; //(D8,D7,NC,792); // Create QEI object for increment encoder
howanglam3 0:80182fb5ee8f 33 void goto_angle(int angle){ // Move motor to specific angle from home point
howanglam3 0:80182fb5ee8f 34 int tar_pulse = ((double) angle / 360.0)* (2.0 * 792.0); // Calculating target pulse number
howanglam3 0:80182fb5ee8f 35 int cur_pulse = dc_motor.getPulses();
howanglam3 0:80182fb5ee8f 36
howanglam3 0:80182fb5ee8f 37 while ( tar_pulse != cur_pulse ){
howanglam3 0:80182fb5ee8f 38
howanglam3 0:80182fb5ee8f 39 if (tar_pulse > cur_pulse){ // Rotate motor clockwise
howanglam3 0:80182fb5ee8f 40 out1 = 1;
howanglam3 0:80182fb5ee8f 41 out2 = 0;
howanglam3 0:80182fb5ee8f 42 }
howanglam3 0:80182fb5ee8f 43 else { // Rotate motor counter clockwrise
howanglam3 0:80182fb5ee8f 44 out1 = 0;
howanglam3 0:80182fb5ee8f 45 out2 = 1;
howanglam3 0:80182fb5ee8f 46 }
howanglam3 0:80182fb5ee8f 47 cur_pulse = dc_motor.getPulses(); // Get increment encoder current pulse number
howanglam3 0:80182fb5ee8f 48 }
howanglam3 0:80182fb5ee8f 49 out1 = 0; // Stop motor
howanglam3 0:80182fb5ee8f 50 out2 = 0;
howanglam3 0:80182fb5ee8f 51 };
howanglam3 0:80182fb5ee8f 52
howanglam3 0:80182fb5ee8f 53 };
howanglam3 0:80182fb5ee8f 54 #endif