for Bertl2014 HTL-Graz-Göoesting
Diff: Steuerung_PWM.cpp
- Revision:
- 2:738a1372c90a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Steuerung_PWM.cpp Mon Jan 18 10:36:13 2016 +0000 @@ -0,0 +1,122 @@ +#include "mbed.h" + +// decleration for left engine +PwmOut MotorL_EN(P1_15); +DigitalOut MotorL_FORWARD(P1_1); +DigitalOut MotorL_REVERSE(P1_0); + +// decleration for right engine +PwmOut MotorR_EN(P0_21); +DigitalOut MotorR_FORWARD(P1_3); +DigitalOut MotorR_REVERSE(P1_4); + +void period_us(int periode) // underprogramm fot the periode +{ + MotorL_EN.period_us(periode); // declaration for the Periode of the left egngine + MotorR_EN.period_us(periode); // declaration for the Periode of the right egngine +} + +void bertl_engine(int left, int right) +{ + int index_Engine = 0; // agrument for the Switch + + // decleration for left and right engine + if (left > 0 && right > 0) // all arguments are positive + index_Engine = 1; + + else if (left < 0 && right > 0) // left argument is negative and right is positive + index_Engine = 2; + + else if (left > 0 && right < 0) // left argument is positive and right is negative + index_Engine = 3; + + else if (left < 0 && right < 0) // left argument is negative and right is negative + index_Engine = 4; + + else if (left == 0 && right < 0) // left argument is zero and right is negative + index_Engine = 5; + + else if (left == 0 && right > 0) // left argument is zero and right is positive + index_Engine = 6; + + else if (left < 0 && right == 0) // left argument is negative and right is is zero + index_Engine = 7; + + else if (left > 0 && right == 0) // left argument is positive and right is is zero + index_Engine = 8; + else // all egines are zero + index_Engine = 9; + +switch (index_Engine) //begin Switch + { + case 1: + MotorR_EN.pulsewidth_us(right); // to declratate the speed of the right engine (-us - +us) + MotorL_EN.pulsewidth_us(left); // to declratate the speed of the left engine (-us - +us) + MotorL_REVERSE = 0; + MotorR_REVERSE = 0; + MotorL_FORWARD = 1; + MotorR_FORWARD = 1; + + break; + + case 2: + MotorR_EN.pulsewidth_us(right); + MotorL_EN.pulsewidth_us(-left); + MotorL_FORWARD = 0; + MotorR_REVERSE = 0; + MotorL_REVERSE = 1; + MotorR_FORWARD = 1; + break; + + case 3: + MotorR_EN.pulsewidth_us(-right); + MotorL_EN.pulsewidth_us(left); + MotorL_REVERSE = 0; + MotorR_FORWARD = 0; + MotorL_FORWARD = 1; + MotorR_REVERSE = 1; + break; + + case 4: + MotorR_EN.pulsewidth_us(-right); + MotorL_EN.pulsewidth_us(-left); + MotorL_FORWARD = 0; + MotorR_FORWARD = 0; + MotorL_REVERSE = 1; + MotorR_REVERSE = 1; + break; + + case 5: + MotorL_EN = 0; + MotorR_EN.pulsewidth_us(-right); + MotorR_FORWARD = 0; + MotorR_REVERSE = 1; + break; + + case 6: + MotorL_EN = 0; + MotorR_EN.pulsewidth_us(right); + MotorR_REVERSE = 0; + MotorR_FORWARD = 1; + break; + + case 7: + MotorR_EN = 0; + MotorL_EN.pulsewidth_us(-left); + MotorL_FORWARD = 0; + MotorL_REVERSE = 1; + break; + + case 8: + MotorR_EN = 0; + MotorL_EN.pulsewidth_us(left); + MotorL_REVERSE = 0; + MotorL_FORWARD = 1; + break; + + case 9: + MotorR_EN = 0; + MotorL_EN = 0; + break; + }//end Switch +}//end bertl_engine \ No newline at end of file