Motor

Dependents:   balance_all

Committer:
ckalintra
Date:
Wed May 16 10:28:22 2018 +0000
Revision:
0:8a7754ecb574
Motor

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ckalintra 0:8a7754ecb574 1 #include "motor.h"
ckalintra 0:8a7754ecb574 2 #include "mbed.h"
ckalintra 0:8a7754ecb574 3 #define control_speed 1
ckalintra 0:8a7754ecb574 4
ckalintra 0:8a7754ecb574 5
ckalintra 0:8a7754ecb574 6 void MOTOR::stop() {//stop the motors
ckalintra 0:8a7754ecb574 7 dir1 = 0;
ckalintra 0:8a7754ecb574 8 dir2 = 0;
ckalintra 0:8a7754ecb574 9 dir3 = 0;
ckalintra 0:8a7754ecb574 10 dir4 = 0;
ckalintra 0:8a7754ecb574 11 pwm1.write(0);
ckalintra 0:8a7754ecb574 12 pwm2.write(0);
ckalintra 0:8a7754ecb574 13 }
ckalintra 0:8a7754ecb574 14
ckalintra 0:8a7754ecb574 15 void MOTOR::balance(float speed) {//for balancing the robot
ckalintra 0:8a7754ecb574 16 stop();//stop the motor
ckalintra 0:8a7754ecb574 17 if (speed<0)//if speed is - go backward
ckalintra 0:8a7754ecb574 18 {
ckalintra 0:8a7754ecb574 19 dir1 = 1;
ckalintra 0:8a7754ecb574 20 dir2 = 0;
ckalintra 0:8a7754ecb574 21 dir3 = 0;
ckalintra 0:8a7754ecb574 22 dir4 = 1;
ckalintra 0:8a7754ecb574 23 float temp = abs(speed);//use PID output to detrmine the speed
ckalintra 0:8a7754ecb574 24 pwm1.write(temp);
ckalintra 0:8a7754ecb574 25 pwm2.write(temp);
ckalintra 0:8a7754ecb574 26 }
ckalintra 0:8a7754ecb574 27 else if (speed>0)//if speed is + go forward
ckalintra 0:8a7754ecb574 28 {
ckalintra 0:8a7754ecb574 29 dir1 = 0;
ckalintra 0:8a7754ecb574 30 dir2 = 1;
ckalintra 0:8a7754ecb574 31 dir3 = 1;
ckalintra 0:8a7754ecb574 32 dir4 = 0;
ckalintra 0:8a7754ecb574 33 float temp = abs(speed);
ckalintra 0:8a7754ecb574 34 pwm1.write(temp);
ckalintra 0:8a7754ecb574 35 pwm2.write(temp);
ckalintra 0:8a7754ecb574 36 }
ckalintra 0:8a7754ecb574 37 }
ckalintra 0:8a7754ecb574 38
ckalintra 0:8a7754ecb574 39 void MOTOR::forward() {//go forward
ckalintra 0:8a7754ecb574 40 stop();
ckalintra 0:8a7754ecb574 41 dir1 = 0;
ckalintra 0:8a7754ecb574 42 dir2 = 1;
ckalintra 0:8a7754ecb574 43 dir3 = 1;
ckalintra 0:8a7754ecb574 44 dir4 = 0;
ckalintra 0:8a7754ecb574 45 pwm1.write(control_speed);
ckalintra 0:8a7754ecb574 46 pwm2.write(control_speed);
ckalintra 0:8a7754ecb574 47 }
ckalintra 0:8a7754ecb574 48
ckalintra 0:8a7754ecb574 49 void MOTOR::backward() {//go backward
ckalintra 0:8a7754ecb574 50 stop();
ckalintra 0:8a7754ecb574 51 dir1 = 1;
ckalintra 0:8a7754ecb574 52 dir2 = 0;
ckalintra 0:8a7754ecb574 53 dir3 = 0;
ckalintra 0:8a7754ecb574 54 dir4 = 1;
ckalintra 0:8a7754ecb574 55 pwm1.write(control_speed);
ckalintra 0:8a7754ecb574 56 pwm2.write(control_speed);
ckalintra 0:8a7754ecb574 57 }
ckalintra 0:8a7754ecb574 58
ckalintra 0:8a7754ecb574 59 void MOTOR::left() {//turn left
ckalintra 0:8a7754ecb574 60 dir1 = 1;
ckalintra 0:8a7754ecb574 61 dir2 = 0;
ckalintra 0:8a7754ecb574 62 dir3 = 1;
ckalintra 0:8a7754ecb574 63 dir4 = 0;
ckalintra 0:8a7754ecb574 64 pwm1.write(control_speed);
ckalintra 0:8a7754ecb574 65 pwm2.write(control_speed);
ckalintra 0:8a7754ecb574 66 }
ckalintra 0:8a7754ecb574 67
ckalintra 0:8a7754ecb574 68 void MOTOR::right() {//turn right
ckalintra 0:8a7754ecb574 69 dir1 = 0;
ckalintra 0:8a7754ecb574 70 dir2 = 1;
ckalintra 0:8a7754ecb574 71 dir3 = 0;
ckalintra 0:8a7754ecb574 72 dir4 = 1;
ckalintra 0:8a7754ecb574 73 pwm1.write(control_speed);
ckalintra 0:8a7754ecb574 74 pwm2.write(control_speed);
ckalintra 0:8a7754ecb574 75 }
ckalintra 0:8a7754ecb574 76
ckalintra 0:8a7754ecb574 77
ckalintra 0:8a7754ecb574 78
ckalintra 0:8a7754ecb574 79