sumo

Dependencies:   Sabertooth2x25 mbed

2doejemplo.cpp

Committer:
jalp89
Date:
2013-11-29
Revision:
0:8758d2e0e09d

File content as of revision 0:8758d2e0e09d:

#include "mbed.h"
#include "Sabertooth2x25.h"

Sabertooth2x25 m(p9,9600);
//*********************LEDs***************************
DigitalOut led1(p29);       //Linea Derecha(rojo)
DigitalOut led2(p28);       //Derecha
DigitalOut led3(p27);       //Derecha Central
DigitalOut led4(p21);       //Central
DigitalOut led5(p22);       //izquierda Central
DigitalOut led6(p23);       //Izquierda
DigitalOut led7(p24);       //Linea Izquierda
//********************Sensores int*********************
DigitalIn senLinDer(p14);
DigitalIn senDer(p15);
DigitalIn senDerCen(p16);
DigitalIn senCen(p20);
DigitalIn senIzqCen(p19);
DigitalIn senIzq(p18);
DigitalIn senLinIzq(p17);
//*******************SW  Int******************************
DigitalIn sw1(p10);     //1
DigitalIn sw2(p11);     //2
DigitalIn sw3(p12);     //3
DigitalIn sw4(p13);     //4
//*******************variables***********************
                int seleccion_linea_derecha=0;                           ////////
                int seleccion_derecha=0;                                ////////  
                int seleccion_enfrente_derecha=0;                       //////// 
                int seleccion_enfrente=0;                               ////////                                      
                int seleccion_enfrente_izquierda=0;                     ////////
                int seleccion_izquierda=0;                              ////////     
                int seleccion_linea_izquierda=0;                         ////////
                int seleccion_suma=0;                                   ////////
                int selec_programa_sw3=0;
                int selec_programa_sw4=0;
                int selec_programa_suma=0;
               
//********************
    int Time=.2;
    int tiempo=0;
//*****
void Seleccion();
void Inicio();
void Leds();
void Busqueda();
void Casos();
void Frente();
void Derecha();
void Izquierda();
void Atras();
void Paro();
//**********************
int main()
{
Seleccion();
wait(1); 
Leds();//.7seg
Leds();//1.4seg
Leds();//2.1seg
Leds();//2.8seg
Leds();//3.5seg
Inicio();   
    while(1)
    {
    //Linea_derecha
        if(seleccion_suma==1)                                       ///-O-//// 
             Derecha();
        else            
///////////////////////////////////////////////////////////////////////////////
    //Linea izquierda
        if(seleccion_suma==1000)                                       ///-O-//// 
             Izquierda();
        else 
                                                                               //linea_derecha y linea izquierda                       //////////                                                                              
                                                                               if(seleccion_suma==1001)                                       ///-O-//// 
                                                                               {
                                                                               Atras();
                                                                               wait(.1);//100 ///////////////////////////////--------aqui-------------------------------------------------------
                                                                               Derecha();
                                                                               wait(Time);  /// ///////////////////////////////--------aqui-------------------------------------------------------
                                                                               }
                                                                               else                                                  ///-O-////       
    Busqueda();    
    Casos();
    }
    
}

void Leds()
{
    led1=1;
    wait(.1);
    led1=0;
    
    led2=1;
    wait(.1);
    led2=0;
    
    led3=1;
    wait(.1);
    led3=0;
    
    led4=1;
    wait(.1);
    led4=0;
    
    led5=1;
    wait(.1);
    led5=0;
    
    led6=1;
    wait(.1);
    led6=0;
    
    led7=1;
    wait(.1);
    led7=0;      
}
void Seleccion()
{       
    selec_programa_suma=0;
    
    if(sw3==1)
    {
    selec_programa_sw3=100;
    led2=1;
    }
    else
    led2=0;
    
    if(sw4==1)
    {
    selec_programa_sw4=1000;
    led1=1;
    }
    else
    led1=0;
    
//******************   
    selec_programa_suma=selec_programa_sw3+selec_programa_sw4;
    
    selec_programa_sw3=0;
    selec_programa_sw4=0;
    
}
void Inicio()
{                                                        ///-C-////
                                                                     ///-A-////
            switch( selec_programa_suma)                             ///-S-////
            {                                                        ///-O-////
                                                                     ///-S-////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
      //sin oponente                                                 //////////
     case 0 : 
             selec_programa_suma=0;                                       ///-O-//// 
             Frente();
             break;    
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
     case 100 : 
             selec_programa_suma=0;                                       ///-O-//// 
             Izquierda();
             wait(Time);
             break; 
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
     case 1000 : 
             selec_programa_suma=0;                                       ///-O-//// 
             Derecha();
             wait(Time);
             break;            
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
    default:                                                       //////////
             selec_programa_suma=0;                                  ///-O-//// 
                                                                     //////////
                                                                     //////////
             break;                                                  //////////
                                                                     //////////                             
                       
            }
}
void Busqueda()

{
    seleccion_suma=0;
    
    if(senLinDer==0)
    {
    seleccion_linea_derecha=1; 
    led7=1;
    }
    else
    led7=0;
    
    if(senDer==0)
    {
    seleccion_derecha=5;
    led6=1;
    }
    else
    led6=0;
    
    if(senDerCen==0)
    { 
    seleccion_enfrente_derecha=10;  
    led5=1;
    }
    else
    led5=0;
    
    if(senCen==0)
    {
    seleccion_enfrente=50; 
    led4=1;
    }
    else
    led4=0;
    
    if(senIzqCen==0)
    {
    seleccion_enfrente_izquierda=100; 
    led3=1;
    }
    else
    led3=0;
    
    if(senIzq==0)
    {
    seleccion_izquierda=500; 
    led2=1;
    }
    else
    led2=0;
    
    if(senLinIzq==0)
    {
    seleccion_linea_izquierda=1000; 
    led1=1;
    }
    else
    led1=0;
    
     seleccion_suma=seleccion_derecha + seleccion_enfrente_derecha + seleccion_enfrente + seleccion_enfrente_izquierda + seleccion_izquierda ; 
     
     //seleccion_linea_derecha=0;                           ////////1
     seleccion_derecha=0;                                 ////////5  
     seleccion_enfrente_derecha=0;                        ////////10
     seleccion_enfrente=0;                                ////////50                                      
     seleccion_enfrente_izquierda=0;                      ////////100
     seleccion_izquierda=0;                               ////////500     
     //seleccion_linea_izquierda=0;                         ////////1000  
     
     
     if(seleccion_suma>0)  
             {
               tiempo=0;
             }

}
void Casos()                                                       
            {                                                        ///-C-////
                                                                     ///-A-////
            switch( seleccion_suma)                                  ///-S-////
            {                                                        ///-O-////
                                                                     ///-S-////
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
      //sin oponente                                                 //////////
     case 0 : 
             seleccion_suma=0;                                       ///-O-//// 
             tiempo++;
             if(tiempo>=30000)
               {
                 Derecha();
                 tiempo=0;
                 wait(.280);
               }
               else{
                    Paro();
                    }
             //frente_inicio();

             break;                                                  ///-O-////          
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
     //derecha
     case 5 : 
             seleccion_suma=0;                                       ///-O-//// 
             Derecha();
             break;                                                  ///-O-////                      
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
     //enfre_derecha
     case 10 : 
             seleccion_suma=0;                                       ///-O-//// 
             Derecha();
             break;                                                  ///-O-////            
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
     //Frente
     case 50 : 
             seleccion_suma=0;                                       ///-O-//// 
             Frente();
             break;                                                  ///-O-////                                   
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
      //enfrente y enfrente derecha                                  //////////
     case 60 : 
             seleccion_suma=0;                                       ///-O-//// 
             Frente();
             break;                                                  ///-O-////                        
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
     //Frente_Izqu
     case 100 : 
             seleccion_suma=0;                                       ///-O-//// 
             Izquierda();
             break;                                                  ///-O-//// 
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
      //enfrente y enfrente izquierda                                 //////////
     case 150 : 
             seleccion_suma=0;                                       ///-O-//// 

             Frente();
             break;                                                  ///-O-////              
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
      //enfrente y enfrente izquierda  y enfrente derecha            //////////
     case 160 : 
             seleccion_suma=0;                                       ///-O-//// 
             Frente();
             break;                                                  ///-O-////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
     //Izquierda
     case 500 : 
             seleccion_suma=0;
             Izquierda();                                       ///-O-//// 
             break;                                                  ///-O-////            

                                                                   ///-O-//// 
///////////////////////////////////////////////////////////////////////////////
                                                                              
                                                                              ///////////////////////////////////////////////////////////////////////////////
                                                                              ///////////////////////////////////////////////////////////////////////////////
                                                                              //////////// enfrente derecha y derecha
                                                                                   case 15 : 
                                                                                           seleccion_suma=0;                                       ///-O-//// 
                                                                                           Derecha();
                                                                                           break;                                                  ///-O-////                          
                                                                              ///////////////////////////////////////////////////////////////////////////////
                                                                              ///////////////////////////////////////////////////////////////////////////////
                                                                              //enfrente derecha y enfrente izquierda
                                                                              case  110: 
                                                                                           seleccion_suma=0;                                       ///-O-//// 
                                                                                           Frente();
                                                                                           break;                                                  ///-O-////              
                                                                              ///////////////////////////////////////////////////////////////////////////////
                                                                              ///////////////////////////////////////////////////////////////////////////////
                                                                              //enfrente izquierda e  izquierda
                                                                              case 600 : 
                                                                                           seleccion_suma=0;                                       ///-O-//// 
                                                                                           Izquierda();
                                                                                           break;                                                  ///-O-////              
                                                                              ///////////////////////////////////////////////////////////////////////////////
                                                                              ///////////////////////////////////////////////////////////////////////////////
                                                                                                                                                            ///////////////////////////////////////////////
                                                                                                                                                            ///////////////////////////////////////////////////////////////////////////////
                                                                                                                                                            //enfrente izquierda e izquierda y enfrente
                                                                                                                                                            case 650 : 
                                                                                                                                                                         seleccion_suma=0;                                       ///-O-//// 
                                                                                                                                                                         Frente();
                                                                                                                                                                         break;                                                  ///-O-////              
                                                                                                                                                           //////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
      //derecha y enfrente                                                //////////
     case 55 : 
             seleccion_suma=0;                                       ///-O-//// 
             Frente();
             break;                                                  ///-O-////            
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////////////////////////
      //izquierda  y enfrente                                         //////////
     case 550 : 
             seleccion_suma=0;                                       ///-O-//// 
             Frente();
             break;                                                  ///-O-////                






///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
       //mas de una opcion                                           //////////
      default:                                                       //////////
             seleccion_suma=0;                                       ///-O-//// 
                                                                     //////////
           Paro();                                                   //////////
                                                                     //////////
             break;                                                  //////////
                                                                     //////////
            }//signo del switch                                      //////////
        }//signo del fin de funcion casos  
void Frente()
{
 m.drive_motor_1(128, 0);
 m.drive_motor_2(128, 0);
}
void Derecha() 
{
 m.drive_motor_1(128, 0);
 m.drive_motor_2(128, 127);
}
void Izquierda()
{ 
 m.drive_motor_1(128, 127);
 m.drive_motor_2(128, 0);
}
void Atras()
{ 
 m.drive_motor_1(128, 127);
 m.drive_motor_2(128, 127);
}
void Paro()
{ 
 m.drive_motor_1(128, 64);
 m.drive_motor_2(128, 64);
}