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(); } } }
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); } } }