Motor

Dependents:   balance_all

motor.cpp

Committer:
ckalintra
Date:
2018-05-16
Revision:
0:8a7754ecb574

File content as of revision 0:8a7754ecb574:

#include "motor.h"
#include "mbed.h"
#define control_speed 1


void MOTOR::stop() {//stop the motors
     dir1 = 0;
     dir2 = 0;
     dir3 = 0;
     dir4 = 0;
     pwm1.write(0);
     pwm2.write(0);
}

void MOTOR::balance(float speed) {//for balancing the robot
    stop();//stop the motor
    if (speed<0)//if speed is - go backward  
    {
     dir1 = 1;
     dir2 = 0;
     dir3 = 0;
     dir4 = 1;
     float temp = abs(speed);//use PID output to detrmine the speed
     pwm1.write(temp);
     pwm2.write(temp);
     }
    else if (speed>0)//if speed is + go forward
    {
     dir1 = 0;
     dir2 = 1;
     dir3 = 1;
     dir4 = 0;
     float temp = abs(speed);
     pwm1.write(temp);
     pwm2.write(temp);
     } 
}

void MOTOR::forward() {//go forward 
     stop(); 
     dir1 = 0;
     dir2 = 1;
     dir3 = 1;
     dir4 = 0;
     pwm1.write(control_speed);
     pwm2.write(control_speed);
}
     
void MOTOR::backward() {//go backward  
     stop(); 
     dir1 = 1;
     dir2 = 0;
     dir3 = 0;
     dir4 = 1;
     pwm1.write(control_speed);
     pwm2.write(control_speed);
}

void MOTOR::left() {//turn left    
     dir1 = 1;
     dir2 = 0;
     dir3 = 1;
     dir4 = 0;
     pwm1.write(control_speed);
     pwm2.write(control_speed);
}

void MOTOR::right() {//turn right   
     dir1 = 0;
     dir2 = 1;
     dir3 = 0;
     dir4 = 1;
     pwm1.write(control_speed);
     pwm2.write(control_speed);
}