jueves, 8 de diciembre de 2011

Robots Ninja


Autor: Cristian Lara
Competencia:Trabajo en equipo. (nivel 1)
Palabras Claves:Lego,nxc




Descripción de la actividad.


Se pide construir un robot que se infiltre en una base militar enemiga y debilite sus defensas,
para facilitar el ingreso posterior de las tropas y el consiguiente rescate de los rehenes.
Es necesario que este robot sea capaz de detectar las fuentes de luz y evadirlas para no ser
visto en la obscuridad, implante bombas en las murallas de la base para facilitar el
ingreso de las tropas.




Solución


El primer paso para resolver las actividades de programacion de robots es realizar el pseudocodigo.


#definimos el  umbral el contador y el tiempo de giro
{
prendemos los sensores el de luz y el tacto
{
Mientras
El umbral es mayor el sensor de luz es activado
{
Si el robot encuentra un punto negro lo esquiva, sigue su rumbo
}
Luego si el sensor de tacto es tocado
Hace un giro random
Retrocede medio segundo
Apaga los motores
Simula la explosión por un segundo
Luego avanza y muestra en pantalla los explosivos restantes
}
}
Mientras
El UMBRAL menor
Avanza buscando un punto negro
Luego si el sensor de tacto es tocado
}

Hace un giro random
Retrocede medio segundo
Apaga los motores
}
}
Sigue avanzando
Busca el punto negro
Una vez encontrado suena una música para llamar la atención
Termina la acción
}




Luego de hacer previamente el pseudocodigo, realizamos el código fuente.


#define UMBRAL 40


int contador = 5;


      task main()
       {
       SetSensorLight(IN_3);              //Se Enciende el sensor de luz
       SetSensorTouch(IN_2);           // se Enciende el sensor de tacto
       SetSensor(IN_2,SENSOR_TOUCH);
       while(contador>=0)
       {
       OnFwd(OUT_AB,75);                        //Avanza  el robot
       if (Sensor(IN_3) < UMBRAL)
       {
       OnRev(OUT_AB,75);
       Wait(100);
       OnFwd(OUT_A,75);
       OnRev(OUT_B,75);
       Wait(100);
       }
       if (SENSOR_2 == 1)
       {
       OnRev(OUT_AB,75);
       Wait(500);
       Off(OUT_AB);
       Wait(1000);
       PlayTone(800,500);
       Wait(1000);
       contador--;        /*Se integra la cantidad(de forma decreciente)  
       ClearScreen()                de explosivos a la pantalla del NXT*/


       TextOut(6,36,"Nº de Explosivos");
       NumOut(50,30,contador );
       OnFwd(OUT_A,75);
       OnRev(OUT_B,50);
       Wait(650);
       OnFwd(OUT_AB,75);
       } }
      while(UMBRAL >40)                        //Busca punto negro
       {
       OnRev(OUT_AB,75);
       Wait(2000);
       PlayTone(6000,1000);
       PlayTone(6,1000);
       Wait(33);
       PlayTone(5,234500);
       Wait(53);
       PlayTone(30,1500);
       Wait(75);
       if(SENSOR_2 == 1)
       {
       OnRev(OUT_AB,75);
       Wait(500);
       Off(OUT_AB);
       Wait(1000);
       }                           //Termina con las cuatro detonaciones
       if(Sensor(IN_3) > UMBRAL)      //Comienza la etapa de distraccion.
       {
       OnFwd(OUT_AB,75);
       OnFwd(OUT_AB,75);
       Wait(2000 
       PlayTone(6000,1000);
       PlayTone(6,1000);
       Wait(33);
       PlayTone(5,234500);
       Wait(53);
       PlayTone(30,1500);
       Wait(75);
       PlayTone(1,1000);
       Wait(100);
       PlayTone(500,234500);
       Wait(1000);
       PlayTone(6,1000);
       Wait(33);
       PlayTone(5,234500);
       Wait(53);
       PlayTone(30,1500);
       Wait(75);
       PlayTone(1,1000);
       Wait(100);
       Wait(2000);
       PlayTone(6000,1000);
       PlayTone(6,1000);
       Wait(33);
       PlayTone(5,234500);
       Wait(53);
       OnRev(OUT_A,75);
       OnFwd(OUT_B,75);
       Wait(600);
       OnRev(OUT_A,75);
       OnFwd(OUT_B,75);
       Wait(600);
       OnRev(OUT_A,75);
       OnFwd(OUT_B,75);
       Wait(600);
       StopAllTasks();
        }
        }}




Vídeo de la Actividad:





Reflexión
Para poder obtener una solución efectiva al problema, fue de gran ayuda el conocimiento e información aportada por el profesor en las clases de cátedra.Ademas de resolver el problema simple de la utilización de sensores de luz y tacto.


No hay comentarios:

Publicar un comentario