Tony Lin / Mbed 2 deprecated BX-car_s

Dependencies:   mbed-rtos mbed

Fork of BX-car_2 by Tony Lin

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers motor_api.cpp Source File

motor_api.cpp

00001 #include "mbed.h"
00002 #include "motor_api.h"
00003 
00004 #define init_v 10  // period in 1.35 ~170ms
00005  BX_motor::BX_motor(char type){
00006    //need N level????
00007   engine_enable = new DigitalOut(PTE21);  
00008   
00009    *engine_enable=1;
00010     
00011     Type=type;
00012     switch (type){
00013      
00014         case 'A':
00015           forward_A = new PwmOut(PTC3);
00016           backward_A = new   PwmOut(PTC4);
00017          
00018          forward_A->period_ms(init_v);
00019          backward_A->period_ms(init_v);
00020          *forward_A=0.5f;
00021          *backward_A=0.5f;
00022         
00023         break;
00024         
00025         
00026        case 'B':     
00027          
00028          forward_B = new PwmOut(PTE29);
00029          backward_B = new PwmOut(PTE23);
00030          forward_B->period_ms(init_v);
00031          backward_B->period_ms(init_v);
00032          *forward_B=0.5f;
00033          *backward_B=0.5f;
00034        break;
00035      
00036      
00037      
00038   }
00039      
00040     }
00041 
00042 
00043 // level: -1.0 ~1.0
00044 void BX_motor::rotate(float level){
00045        
00046        Level=level;
00047     
00048        if(level >0){
00049          
00050          switch(Type){
00051          
00052          case 'A':
00053               *forward_A=level;
00054               *backward_A=0;
00055          break;
00056          case 'B':
00057               *forward_B=level;
00058               *backward_B=0;
00059          break;  
00060          }
00061            
00062        }else if(level <0){
00063            
00064             level=-1.0*level;
00065            
00066          switch(Type){
00067          
00068          case 'A':
00069              *forward_A=0;
00070               *backward_A=level;
00071          break;
00072          case 'B':
00073             *forward_B=0;
00074               *backward_B=level;
00075          break;  
00076          }
00077            
00078       }
00079        else{
00080          switch(Type){
00081          
00082             case 'A':
00083               *forward_A=1.0f;
00084               *backward_A=1.0f;
00085                 
00086             break;
00087             case 'B':
00088                *forward_B=1.0f;
00089               *backward_B=1.0f;
00090             break;  
00091          }
00092            
00093            
00094            }
00095        
00096        
00097     
00098     
00099     
00100     
00101     
00102     
00103     
00104 }
00105 
00106 
00107