Exemplo n.º 1
0
void hacerReceta(cubo* C, char* s)
{
    char c;
    while((c = *s++)) /*doble parentesis asi mi compilador no llora*/
    {
        if(c == 'F')
            girarF(C);
        else if(c == 'f')
            girarf(C);
        else if(c == 'U')
            girarU(C);
        else if(c == 'u')
            giraru(C);
        else if(c == 'B')
            girarB(C);
        else if(c == 'b')
            girarb(C);
        else if(c == 'D')
            girarD(C);
        else if(c == 'd')
            girard(C);
        else if(c == 'L')
            girarL(C);
        else if(c == 'l')
            girarl(C);
        else if(c == 'R')
            girarR(C);
        else if(c == 'r')
            girarr(C);
        else if(c == ' ')
            ;
        else
        {
            printf("Argumento invalido a hacerReceta. Caracter: %c (%i)\n",c,c);
            abort();
        }
    }
}
Exemplo n.º 2
0
int main()
{
  s.top = 0;
  pause(500);
  
  /*Declaracion de Variables*/

  /*Las siguientes 4 variables sirven para tomar las distancias*/
  int adelante;
  int derecha;
  int izquierda;
  int atras;
  
  /*Movimiento que se va a realizar*/
  int actual;
  
  /*Bandera para saber si se puede mover o no el robot*/
  int bandera;
  int mover;
  
  mover     = 0;
  bandera   = 0;
  actual    = 0;
  adelante  = 0;
  derecha   = 0;
  izquierda = 0;
  atras     = 0;
  
  while (1){
    
    
    /*Se revisan todas las posibilidades*/
    /*En caso de usar solo 1 sensor, se gira el robot para tomar distancias*/
    /*De lo contrario, solo te toman en diferentes puertos*/

      adelante = ping_cm(8);
      
      //girarD();
      
      derecha = ping_cm(3);
      
      // girarD();
      //girarD();
      
      izquierda = ping_cm(10);
      
      //girarD();
      
      /* Jerarquia de movimiento: derecha, adelante, izquierda, atras */
      bandera = 0;
      
        if (izquierda>=15){
          push(2);
          bandera = 1;
        }
        
        if (adelante>=15){
          push(1);
          bandera = 1;
        }
        
        if (derecha>=15){
          push(3);
          bandera = 1;
        }
        
        if (bandera!=1){
            push(4);
          }

        adelante = (adelante*10)/3.25;
        derecha  = (derecha *10)/3.25;
        izquierda= (izquierda*10)/3.25;
        actual = pop();
        
        
        /*Se revisa el movimiento que se va a hacer */
        
        if (actual == 3){
            girarD();
            drive_goto(46,46);
          }
        if (actual == 1){
            drive_goto(46,46);
          }
        if (actual == 2){
            girarI();
            drive_goto(46,46);
          }
          
        if (actual == 4){
            girarI();
            girarI();
            drive_goto(48,49);
          }
    
        
   }        
}