Robot Destructor

Autor: Daniela Muñoz Muñoz
Competencia: Creatividad e innovación.(Nivel 1)
Palabras Clave: Programación, NXC, Rotobica, Lego.



Descripción de la Actividad:  A continuación les daré a conocer mi grata experiencia como estudiante de primer año de ingeniería civil en informática, en el laboratorio llamado "Robot Destructor", para el kit de robots de Lego NXT.
El propósito del laboratorio era hacer que el robot chocara con cierto elemento (pilar),y al hacer el choque que éste reaccionara retrocediendo y emitiendo un sonido representando una explosión.
Despues de esta explosión, el robot se dirigiese a otro pilar, haciendo los mismos procedimientos del primero. Al cabo de chocar y hacer explotar 5 pilares, éste emitira una melodia y asi terminara su recorrido.

Solución
La solución al problema es crear el  pseudocódigo que nos facilitara el desarrollo del código, el código y el vídeo que reflejara el desarrollo del código funcionando correctamente


Pseudocódigo 
  
                   -Avanzar derecho indefinidamente hasta que toque algún pilar.
                   -Al chocar con el objeto, retroceder medio segundo.
                   -Emitir un sonido de detonación.
                   -Esperar 2 segundos.
                   -Realizar un giro entre 90º y 720º grados aleatoriamente.
                   -Avanzar derecho hasta encontrarse con otro pilar.
                   -Realizar todas estas operaciones, cuatro veces.
                   -Al chocar la quinta vez con un pilar, retroceder medio segundo.
                   -Emitir un sonido de que no queda dinamita.
                   -Detenerse.


Código:

//Grupo The BootFather...

intcontador=0;
intGiro;

task main()
{
SetSensorTouch(IN_1);
OnFwd(OUT_A, 78);
OnFwd(OUT_C, 75);            //EL ROBOT AVANZA DERECHO.
while (true)                            //SE HACE LA ULTIMA SENTENCIA INFINITAMENTE.

 {
if (SENSOR_1 == 1)           //SI EL SENSOR DE TACTO SE ACTIVA.
{
OnRev(OUT_AC, 75);
Wait(500);                             //EL ROBOT RETROCEDE.
PlayTone(4000,1000);         //EL ROBOT EMITE UN SONIDO DE DETONACION.
Off(OUT_AC);
Wait(2000);                           //SE DETIENE POR DOS SEGUNDOS.
OnRev(OUT_C, 75);
OnFwd(OUT_A, 75);
Giro =Random(2000)+700;
Wait (Giro);                             //EL ROBOT GIRA EN SU EJE (GIRO ALEATORIO).
OnFwd(OUT_AC, 75);          //EL ROBOT AVANZA DERECHO.
contador++;                            //EL ROBOT SUMA UN GIRO.
     }


if (contador==5)                      //CUANDO EL CONTADOR MARQUE LA QUINTA VUELTA.
{
Off(OUT_AC);                        //SE DETIENE EL ROBOT.
PlayTone(5500, 1000);         //SE EMITE UN SONIDO. AVISA QUE NO TIENE DINAMITA.
Wait(1000);
StopAllTasks();                     //SE DETIENE EL ROBOT COMPLETAMENTE Y FINALIZA.

}
}
} 

  Vídeo del Robot Destructor



Reflexión:
Al realizar proyectos de esta indole, aprendemos hacer que el robot cumpla con funciones específicas (dadas en el codigo) y que al ejecutarlas  las haga igual como nosotros le ordenamos, aunque también, tenemos que tener en cuenta los problemas externos que pueden surgir, ya sea que el robot no tenga las ruedas derechas, que este mal armado, entre otros aspectos.