Autor: Felipe Lagos Morapasten
Competencia: Gestión en TI. (Nivel 1)
Palabras Clave: Programación de Robot, NXC, Robótica, Kit Lego.
Competencia: Gestión en TI. (Nivel 1)
Palabras Clave: Programación de Robot, NXC, Robótica, Kit Lego.
Descripción de la Actividad
Finalizando las competencias de Gestión de Tecnologías de Información, quiero mostrar a ustedes la actividad número 2 del Curso de Programación de Robots, donde se tuvo que realizar un código fuente en NXC.
La problemática de la actividad consistió en hacer un robot se convierta en destructor, este debe andar deambulando por la pista que contiene paredes y pilares, cuando detecte ya sea un pilar o un pared debe detonar una bomba (emitir un sonido) al momento de hacer esto debe retroceder y seguir en busca de objetivos, esto lo realiza 5 veces que son la cantidad de bombas disponibles al finalizar todo lo demás nombrado anteriormente reproducir un sonido que marca el final.
Solución:
En todo tipo de problemas orientado a la robótica, lo fundamental es hacer un pseudocódigo para la actividad, esto nos hace que la actividad sea de menor dificultad para después pasar a realizar el código fuente en NxC.
Pseudocódigo
Pseudocódigo
int bombas=0;
Encender Sensor de Tacto
Mientras(bombas<=5)
{
Avanzar
Si (el sensor de tacto es igual a 1) detecta objetivo
{Sonido de detonación
Sumar uno a bombas
Detener 2 segundos
Retroceder
Girar aleatoriamente} // Cierre de si
} // Cierre del Mientras
Si (bombas == 5)
{
Detenerse
Sonido de término
}
El código fuente del proyecto en NXC es el siguiente:
int GIRO=500; // Declaración de variable del giro.
int contador=0; // Declaración de variable del contador Inicial
task main ()
{
SetSensorTouch(IN_1); // Inicio del Sensor de Tacto, puerto 1
OnFwd(OUT_AC,100); // Instrucción para que vaya hacia adelante por 1 segundo
Wait (1000);
while(true) // Lo que viene abajo, lo repite siempre
{
if ( SENSOR_1==1) // Si el sensor de tacto es igual a 1, siente el golpe
{
PlayTone (1500,1200); // Sonido que marca que la detonación de la bomba
OnRev(OUT_AC, 75); // Indica que se va a retroceder por medio segundo
Wait (500);
Off (OUT_AC); // Los motores se deben apagar por 2 segundos
Wait (2000);
GIRO= Random(500)+1000;// Indica el valor de el giro que va a hacer
// aleatorio entre 90° y 720°.
OnRev(OUT_C,75);// Va junto con la orden siguiente y hace que se desvie
// pero no afecta el rumbo hacia adelante
OnFwd(OUT_A,75);// Ordena que valla hacia adelante en busca de una bomba
Wait (GIRO);
Off (OUT_AC); // Apagar los motores
OnRev(OUT_C,75); // Retroceso leve
OnFwd (OUT_A,75);//Orden que acompaña al giro necesaria para que se efectué
Wait (100);
GIRO += Random(51);// Produce que el robot haga un giro final
OnFwd(OUT_C,75);
contador++; // Segunda parte del Contador
}
if (contador ==5) //Ultima parte del Contador que dice que busque
// 5 bombas y se detenga
{
Off (OUT_AC); // El apagar de los 2 motores.
PlayTone (2000,1000); // Sonido que marca el final de la actividad
Wait (2000);
StopAllTasks (); // Marca el final de todas las instrucciones.
}
}
}
En el código se puede apreciar la instrucción StopAllTasks la cual nos permite terminar la tarea, finalizando el ciclo while true del codigo, además del uso de un contador que nos permite detonar las 5 bombas y por último el empleamiento de PlayTones para los sonidos de detonación de bombas y el final de la actividad
El video de esta actividad es el siguiente:
Reflexión:
El uso de decisiones ( if ) y de un contador fue de gran ayuda para realizar con éxito esta segunda actividad ya que las decisiones me hicieron pensar en los casos posibles como cuando el sensor de tacto detecta un objetivo, cuando las bombas detonadas son 5, el contador sirvió de ayuda para determinar las bombas que se detonó y así poder dar por finalizada la actividad al registrar un valor igual a 5.
Te invito a que si tienes dudas o quieres complementar esta actividad mediante opiniones, otras informaciones no tengas miedo de emitir tus comentarios, a participar donde cada comentario hará que se haga más interactivo este espacio.
No hay comentarios:
Publicar un comentario