lunes, 10 de octubre de 2011

Primer programa en NXC

Autor:Patricio Riquelme.
Competencias: Desarrollo de Sofware (nivel 1).

Descripcion de la actividad.

          La programación es parte de los elementos fundamentales de la tecnología ya que sin ella las maquinas como los computadores, microondas e incluso los trenes eléctricos  no existirían o no nos brindarían los mismos servicios que hoy. Pero ¿por qué?, porque la programación es el conjunto de instrucciones en lenguaje de programación que dan paso al programa y en donde el programa a través de estas instrucciones le dice que acción debe realizar la  maquina.
En esta primera actividdad de programacion de robot pondremos en practica lo mas basico de la programacion aprendido en nuestra primera semana de actividades.
La actividad consiste en  elaborar un "robot para tour" en donde con la ayuda de un robot lo programaremos con una serie de comandos para que sea capaz de recorrer una ruta establecida, dentro de un parque de atracciones esquivandocierto obstaculos y deteniendose para que los pasajeros tomen fotografias. En terminos practicos, ya que no se cuenta con un robot (ni un parque de atracciones) a escala real, con ayuda de su robot NXT, deben simular esta actividad en la mesa de competición preparada para la ocasión. Cabe señalar que debe ser recorrida 2 veces. 


Modelo de Solucion
 

La solución al problema de cómo darle las instrucciones al robot para que se mueva  era que se requería del lenguaje NXC
El manejo de tiempos de avance y giro fue el que más complicaciones presento ya que la diferencia de un segundo alteraba todo el resultado, por esto mediante una serie de pruebas se logro ajustar el tiempo para llegar a un resultado óptimo.

Pseudocodigo.


A modo de primera solucion se realiza una "programacion" a en lenguaje humano-nxc.

Encender los motores;
            Avanzar 5,3 segundos hasta la primera estación; ;
            Detenerse  por 2,0 s.;
            Avanzar 1,2 s.;
            Girar hacia la izquierda durante 0,3 s.; // la idea es que en 0,3 s. gire en 90º
            Avanzar  2,05 s.;
            Detenerse en la segunda estación durante 2,0 s.;
            Girar hacia la izquierda durante 0,6 s.; // la idea es que  en 0,6 gire un poco mas de 90º
            Avanzar durante 3,5 s.;
           Girar hacia la derecha durante 0,13 s.; //  en 0,13 s. gire 45º aprox.
            Avanzar 1,2 s.;
            Girar hacia la izquierda durante 0,12 s.; //en 0,12 s. gire 45º grados
           Avanzar 2,7 s;
Detenerse en la tercera estación durante 2,0 s.
Girar hacia la izquierda durante 0,5 s.; // en 0,5. s. gire 90º
Avanzar 1,2 s.;
           Gira hacia la izquierda durante 0,6 s; //aquí llega al inicio y en 0,6 s. gire 90º




Codigo.

task main()
    {
       repeat(2) // hace el recorrido 2 veces.
      {
         OnFwd(OUT_BC, 75); //Avance recto
         Wait(5300);
         Off (OUT_BC);
         Wait (2000);       // Estacion Nº 1.
         OnFwd(OUT_BC, 75); // Avance recto
         Wait (1200);
         OnRev(OUT_C, 75);  //Giro Nº 1 hacia la izquierda.
         Wait (310);        
         OnFwd(OUT_C, 75);  //Avance recto
         Wait (2050);
         Off (OUT_BC);
         Wait (2000);       //Estacion Nº 2
         OnRev(OUT_C, 75);  // Giro Nº2 hacia la izquierda.
         Wait (600);       
         OnFwd(OUT_BC, 75); // Avance recto
         Wait (3500);
         OnRev(OUT_B, 75);  // Giro Nº3 hacia la derecha.
         Wait (130);
         OnFwd(OUT_B, 75);  //Avance recto
         Wait (1200);
         OnRev(OUT_C, 75);  //Giro Nº4 hacia la izquierda.
         Wait (120);
         OnFwd(OUT_C, 75);  //Avance recto
         Wait (2700);
         Off (OUT_BC);      //Estacion N°3
         Wait (2000);
         OnFwd (OUT_B, 75); //Giro Nº5 hacia la izquierda.
         Wait (500);
         OnFwd (OUT_BC, 75); //Avance recto
         Wait (1200);
         OnRev(OUT_B, 75);  //Giro Nº3 hacia la izquierda.
         Wait(600);         //Final e inicio.  
      }
      Off(OUT_BC);          // apagado de motores.
}  
 Link: hhttp://www.youtube.com/watch?v=DiZ9MwLbQSY

Conlusion.

La realizacion de esta actividad es una forma didacatica de poner en practica la materia pasada en clases,  junto coin esto, dichas actividades se realiza en grupo con lo que la   distribucion de funciones y disponibilidad de cada uno es fundamental para desarrollar un buen trabajo.

No hay comentarios:

Publicar un comentario