Cristian Junca / motorDriver
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Driver.cpp Source File

Driver.cpp

00001 #include "mbed.h"
00002 #include "Driver.h"
00003 
00004 Driver::Driver(PinName M1A, PinName M1B, PinName M2A, PinName M2B):
00005             M1A(M1A), M1B(M1B), M2A(M2A), M2B(M2B){
00006     setPeriod_ms(1000);               
00007 }
00008 
00009 void Driver::setPeriod_ms(int32_t period){
00010     _period = period;
00011     M1A.period_ms(_period);
00012     M1B.period_ms(_period);
00013     M2A.period_ms(_period);
00014     M2B.period_ms(_period);
00015 }
00016 
00017 void Driver::neutral(){
00018     M1A.write(0);
00019     M1B.write(0);
00020     M2A.write(0);
00021     M2B.write(0);
00022 }
00023 
00024 void Driver::forward(float dutyCycle1, float dutyCycle2){
00025     _dutyCycle1 = dutyCycle1;
00026     _dutyCycle2 = dutyCycle2;
00027     if(_dutyCycle1 > 1.0f)
00028         _dutyCycle1 = 1.0f;
00029     if(_dutyCycle2 > 1.0f)
00030         _dutyCycle2 = 1.0f;
00031     if(_dutyCycle1 < 0)
00032         _dutyCycle1 = 0.0f;
00033     if(_dutyCycle2 < 0)
00034         _dutyCycle2 = 0.0f;
00035         
00036     M1A.write(_dutyCycle1);
00037     M1B.write(0);
00038     M2A.write(_dutyCycle2);
00039     M2B.write(0);
00040 }
00041 
00042 void Driver::backward(float dutyCycle1, float dutyCycle2){
00043     _dutyCycle1 = dutyCycle1;
00044     _dutyCycle2 = dutyCycle2;
00045     if(_dutyCycle1 > 1.0f)
00046         _dutyCycle1 = 1.0f;
00047     if(_dutyCycle2 > 1.0f)
00048         _dutyCycle2 = 1.0f;
00049     if(_dutyCycle1 < 0)
00050         _dutyCycle1 = 0.0f;
00051     if(_dutyCycle2 < 0)
00052         _dutyCycle2 = 0.0f;
00053         
00054     M1A.write(0);
00055     M1B.write(_dutyCycle1);
00056     M2A.write(0);
00057     M2B.write(_dutyCycle2);   
00058 }
00059 
00060 void Driver::right(float dutyCycle1, float dutyCycle2){
00061     _dutyCycle1 = dutyCycle1;
00062     _dutyCycle2 = dutyCycle2;
00063     if(_dutyCycle1 > 1.0f)
00064         _dutyCycle1 = 1.0f;
00065     if(_dutyCycle2 > 1.0f)
00066         _dutyCycle2 = 1.0f;
00067     if(_dutyCycle1 < 0)
00068         _dutyCycle1 = 0.0f;
00069     if(_dutyCycle2 < 0)
00070         _dutyCycle2 = 0.0f;
00071         
00072     M1A.write(0);
00073     M1B.write(_dutyCycle1);
00074     M2A.write(_dutyCycle2);
00075     M2B.write(0);
00076 }
00077 
00078 void Driver::left(float dutyCycle1, float dutyCycle2){
00079     _dutyCycle1 = dutyCycle1;
00080     _dutyCycle2 = dutyCycle2;
00081     if(_dutyCycle1 > 1.0f)
00082         _dutyCycle1 = 1.0f;
00083     if(_dutyCycle2 > 1.0f)
00084         _dutyCycle2 = 1.0f;
00085     if(_dutyCycle1 < 0)
00086         _dutyCycle1 = 0.0f;
00087     if(_dutyCycle2 < 0)
00088         _dutyCycle2 = 0.0f;
00089         
00090     M1A.write(_dutyCycle1);
00091     M1B.write(0);
00092     M2A.write(0);
00093     M2B.write(_dutyCycle2);
00094 }