for Bertl2014 HTL-Graz-Göoesting

Steuerung_PWM.cpp

Committer:
hemmer_matthias
Date:
2016-01-18
Revision:
2:738a1372c90a

File content as of revision 2:738a1372c90a:

#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