Driver for two motors library

Driver.cpp

Committer:
cristian_junca
Date:
2020-07-29
Revision:
1:e417951c16d7
Parent:
0:eafb70ae80f7

File content as of revision 1:e417951c16d7:

#include "mbed.h"
#include "Driver.h"

Driver::Driver(PinName M1A, PinName M1B, PinName M2A, PinName M2B):
            M1A(M1A), M1B(M1B), M2A(M2A), M2B(M2B){
    setPeriod_ms(1000);               
}

void Driver::setPeriod_ms(int32_t period){
    _period = period;
    M1A.period_ms(_period);
    M1B.period_ms(_period);
    M2A.period_ms(_period);
    M2B.period_ms(_period);
}

void Driver::neutral(){
    M1A.write(0);
    M1B.write(0);
    M2A.write(0);
    M2B.write(0);
}

void Driver::forward(float dutyCycle1, float dutyCycle2){
    _dutyCycle1 = dutyCycle1;
    _dutyCycle2 = dutyCycle2;
    if(_dutyCycle1 > 1.0f)
        _dutyCycle1 = 1.0f;
    if(_dutyCycle2 > 1.0f)
        _dutyCycle2 = 1.0f;
    if(_dutyCycle1 < 0)
        _dutyCycle1 = 0.0f;
    if(_dutyCycle2 < 0)
        _dutyCycle2 = 0.0f;
        
    M1A.write(_dutyCycle1);
    M1B.write(0);
    M2A.write(_dutyCycle2);
    M2B.write(0);
}

void Driver::backward(float dutyCycle1, float dutyCycle2){
    _dutyCycle1 = dutyCycle1;
    _dutyCycle2 = dutyCycle2;
    if(_dutyCycle1 > 1.0f)
        _dutyCycle1 = 1.0f;
    if(_dutyCycle2 > 1.0f)
        _dutyCycle2 = 1.0f;
    if(_dutyCycle1 < 0)
        _dutyCycle1 = 0.0f;
    if(_dutyCycle2 < 0)
        _dutyCycle2 = 0.0f;
        
    M1A.write(0);
    M1B.write(_dutyCycle1);
    M2A.write(0);
    M2B.write(_dutyCycle2);   
}

void Driver::right(float dutyCycle1, float dutyCycle2){
    _dutyCycle1 = dutyCycle1;
    _dutyCycle2 = dutyCycle2;
    if(_dutyCycle1 > 1.0f)
        _dutyCycle1 = 1.0f;
    if(_dutyCycle2 > 1.0f)
        _dutyCycle2 = 1.0f;
    if(_dutyCycle1 < 0)
        _dutyCycle1 = 0.0f;
    if(_dutyCycle2 < 0)
        _dutyCycle2 = 0.0f;
        
    M1A.write(0);
    M1B.write(_dutyCycle1);
    M2A.write(_dutyCycle2);
    M2B.write(0);
}

void Driver::left(float dutyCycle1, float dutyCycle2){
    _dutyCycle1 = dutyCycle1;
    _dutyCycle2 = dutyCycle2;
    if(_dutyCycle1 > 1.0f)
        _dutyCycle1 = 1.0f;
    if(_dutyCycle2 > 1.0f)
        _dutyCycle2 = 1.0f;
    if(_dutyCycle1 < 0)
        _dutyCycle1 = 0.0f;
    if(_dutyCycle2 < 0)
        _dutyCycle2 = 0.0f;
        
    M1A.write(_dutyCycle1);
    M1B.write(0);
    M2A.write(0);
    M2B.write(_dutyCycle2);
}