viernes

Actividad de Programación Creativa



Autor:Angel Aedo Busto
Competencia: Creatividad e Innovación (Nivel 1)
Palabras Clave: NXC, Lego,  Mindstorm, Programación, Robot.

Descripción 
    
    Primero que todo, en esta tarea aplicamos los nuevos conocimientos adquiridos, ya que en esta actividad debíamos implementar a nuestro robot un sensor de tacto, para que al momento de hacer contacto con los cubos y paredes, se encendiera; seguido de este acto, el robot tenía que retroceder, dar una vuelta y emitir un sonido con el que indicaría que había destruido el objetivo. Esto se debía repetir 5 veces y al final del trayecto tendría que tocar un  sonido diferente a los anteriores con el que indicaría que se había quedado sin explosivos. Luego comenzamos por desarrollar el pseudocódigo con el que tendríamos una idea de cómo seria nuestro código en NXC.

Modelo de Solución

    Estrategia de Trabajo:


Hugo: Se encargó de Traspasar las ideas del recorrido del robot, al papel, mediante el pseudocódigo el cual debería ser lo más claro y legible, para que la creación del código fuera lo más exacta posible.
Ángel y Felipe: Se Preocuparon de Interpretar el pseudocódigo, para así lograr como resultado final un código que cumpliera con el objetivo planteado, pero que se iría modificando a medida que fuéramos comprobando en terreno nuestro código.

José Luis: su tarea fue la de posicionar correctamente el robot, e ir registrando de forma escrita los errores que surgían durante el transcurso del recorrido y dejar un registro visual.
             Finalmente, cuando conseguimos que el robot cumpliera con el objetivo, procedimos a depurar el código , fue en este momento cuando dimos a conocer lo que pensábamos respecto al código, para que así no se pasara a llevar a nadie del grupo, ni tampoco se descarta alguna idea.

Uno de los problemas que se nos presento fue el calcular el giro aleatorio, que éste sea de más de 90º y menos de 720º como se pedía en la pauta. La solución a esto fue generar un random con un intervalo. Otra de las complicaciones fue la implementación de un ciclo que se ejecutara la cantidad de veces requerias, pues iniciamos una variable en 0 y al definirse que realice ciclos menores a 6, realizaba 6 acciones. Esto se debió a que nuestro ciclo realizaba la acción antes de sumar el contador. Nuestro ataque al problema fue reducir el ciclo a menores a 5, de este modo se realiza una acción completa y el contador sube a uno. (quedando ciclo1, contador = 0; ciclo 2, contador=1, etc).

Pseudocódigo

Contador (de bombas)=0

                  Avanza el robot
                  Si robot impacta
                                    Retroceder 0,5 segundos
                                    Reproducir sonido de detonación
                                    Detenerse (Esperar 2 segundos)
                                    Giro derecha al azar entre 90° y 720°
                                    Detener Robot
                                    Contador +1
                  Vuelve a entrar al proceso mientras el contador sea <5
                                    Reproduce Sonido Final (Sin Munición)
                  APAGADO TOTAL

Código NXC

int TiempoGiro;
int Contador=0;
task main()
  {
   SetSensorTouch(IN_4);   //asignar sensor a puerto 4
     do     {
      OnFwd(OUT_AC,75);   //avanzar
      if(SENSOR_4 == 1)  //si el sensor se activa
        {
         TiempoGiro=Random(2521)+360; //variable de giro 90 a 720
         OnRev (OUT_AC,75);           //reversa
         Wait(500);  
         Off(OUT_AC);
         PlayFileEx("! 
Attention.rso",4,FALSE); //sonido bomba
         Wait(2000);
         OnRev(OUT_A,75);        //asginacion potencia giro
         OnFwd (OUT_C,75);       //asignacion potencia giro
         Wait(TiempoGiro);       //ejecucion random del tiempo de giro
         Off(OUT_AC);
         Contador++;             //al terminar ciclo contador aumenta
         }
}
  while (Contador<5);    //fin del ciclo si contador es 4
        Wait(2000);
        PlayFileEx("! Startup.rso",4,FALSE);  //sonido sin stock bomba
        Wait(4000);
 }
Video de la Actividad




Reflexión

    
 En es trabajo tuvimos que utilizar nuevamente los comando básicos para la creación del código, en el que tuvimos que integrarle uno nuevo para poder usar el sensor de tacto que se escribe como: SetSensorTouch (el que es con el que iniciábamos el sensor), en conjunto con los demás comandos logramos que nuestro robot desarrollará sin mayores inconvenientes su recorrido.



     En sí, el trabajo fue muy didáctico al igual que el anterior lo que hace que la materia sea mucho mas fácil de comprender, además de lograr aprender como optimizar nuestros tiempos y  trabajar como un equipo y así cumplir a tiempo con la elaboración del proyecto.
     Hablando a gran escala creo que logramos con gran éxito las competencias ya que nuevamente nos pudimos organizar con gran éxito, dando como resultado final un trabajo de gran nivel. Y un factor que es importante en cada trabajo que se realiza es tener paciencia, para repetir los procesos mas de una vez y también el código hasta obtener resultados que nos satisfagan.

No hay comentarios:

Publicar un comentario