Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
motor.cpp
00001 /** A Motor Driver, used for setting the pins for PWM Outpu 00002 * for use with ROCO104 00003 * 00004 * @note Synchronization level: Interrupt safe 00005 * 00006 * Example: 00007 * @code 00008 * // Toggle a LED 00009 * #include "mbed.h" 00010 * 00011 * Motor Wheels(D15,D14,D13,D12); 00012 * 00013 * int main() 00014 * { 00015 * Wheel.Period_in_ms(2);//Set frequency of the PWMs 500Hz 00016 * while(true) 00017 * { 00018 * Wheel.Speed(0.8,0.8);//Forward 80% 00019 * wait(5.0); 00020 * Wheel.stop(); 00021 * wait(1.0); 00022 * Wheel.Speed(-0.8,-0.8);//Reverse 80% 00023 * wait(5.0); 00024 * Wheel.stop(); 00025 * wait(1.0); 00026 * } 00027 * } 00028 * @endcode 00029 */ 00030 00031 #include "motor.h" 00032 Motor::Motor(PinName pinName1, PinName pinName2, PinName pinName3, PinName pinName4) : pin1(pinName1), pin2(pinName2), pin3(pinName3), pin4(pinName4) 00033 { 00034 } 00035 void Motor::Fwd(float duty) 00036 { 00037 this->pin1 = 0.0f; 00038 this->pin2 = duty; 00039 this->pin3 = 0.0f; 00040 this->pin4 = duty; 00041 } 00042 void Motor::Rev(float duty) 00043 { 00044 this->pin1 = duty; 00045 this->pin2 = 0.0f; 00046 this->pin3 = duty; 00047 this->pin4 = 0.0f; 00048 } 00049 void Motor::Stop(void) 00050 { 00051 this->pin1 = 0.0f; 00052 this->pin2 = 0.0f; 00053 this->pin3 = 0.0f; 00054 this->pin4 = 0.0f; 00055 } 00056 int Motor::Speed(float speedA, float speedB) 00057 { 00058 if(speedA>1.0f||speedA<-1.0f){ //CHECK speedA Value is in Range! 00059 return -1; //return ERROR code -1=speedA Value out of range! EXIT Function 00060 } 00061 if(speedB>1.0f||speedA<-1.0f){ //CHECK speedB Value is in Range! 00062 return -2; //return ERROR code -2=speedB Value out of range! EXIT Function 00063 } 00064 00065 //If speed values have passed the checks above then the following code will be executed 00066 00067 if(speedA<0.0f) 00068 { //Reverse A motor 00069 this->pin1 = -speedA; 00070 this->pin2 = 0.0f; 00071 } 00072 00073 else 00074 { //Forward A motor 00075 this->pin1 = 0.0f; 00076 this->pin2 = speedA; 00077 } 00078 00079 if(speedB<0.0f) 00080 { //Reverse B motor 00081 this->pin3 = -speedB; 00082 this->pin4 = 0.0f; 00083 } 00084 else 00085 { //Forward B motor 00086 this->pin3 = 0.0f; 00087 this->pin4 = speedB; 00088 } 00089 return 0; //Return ERROR code Zero i.e. NO ERROR success! 00090 } 00091 00092 void Motor::Period_in_ms(int msPeriod) 00093 { 00094 this->pin1.period_ms(msPeriod); 00095 this->pin2.period_ms(msPeriod); 00096 this->pin3.period_ms(msPeriod); 00097 this->pin4.period_ms(msPeriod); 00098 }
Generated on Sun Jul 17 2022 02:59:28 by
1.7.2