viernes, 9 de diciembre de 2011

Proyecto Dribbler

Autor: Valentina Peña Díaz
Competencia: Creatividad e innovación
Palabra clave: Proyecto Robótica, nxt

Descripción de la actividad:
Se debe crear un robot autónomo el cual debe encontrar la mayor cantidad de “zonas de puntaje” en la pista, sin chocar con los obstáculos presentes (paredes, bloques, etc.), ya que cuando pase esto, termina el juego.
Cuando el robot vaya a chocar, el jugador debe indicarle que existe peligro de choque, a través de una señal audible (grito, pitazo, aplauso, etc.), de modo que el robot no colisione.
Cada vez que el robot pase por la zona de puntaje su velocidad ira en aumento.
Solución:
En grupo se ha creado un robot, el cual ha sido diseñado por nosotros para que cumpla con los diferentes requisitos que nos pide el profesor en la actividad dada.

int cont=0;
int speed=10;
mutex mut;

task music()
{
while(true)
{
Acquire(mut); //para que adquiera todos los recursos de la maquina
PlayTone(800,1000);
Wait(200);
PlayTone(400,150);
Wait(200);
Release(mut); //para que suelte los recursos
}
}

task musicspeed()
{
while(true)
{
if(Sensor(IN_2)<45){

Acquire(mut);
PlayTone(500,900);
Wait(200);
PlayTone(800,200);
Wait(200);
PlayTone(600,1000);
Wait(200);
Release(mut);
}
}
}

task luz()
{
while(true)
{
if(Sensor(IN_2)<30){
Acquire(mut);
if(speed < 100) //la velocidad tiene que ser menor qie 100
{speed=speed + 10;}
cont=cont + 10; //al contador se le suman 10
OnRev(OUT_A,70); // giro aleatorio
OnFwd(OUT_C,70);
Wait(Random(600)+600);
OnFwd(OUT_AC,70);
Wait(500);
Release(mut);
}
}
}
task esquivar()
{
if(Sensor(IN_3)> 60){

OnFwd(OUT_AC,70);
Wait(200);
OnRev(OUT_A,70);
OnFwd(OUT_C,70);
Wait(Random(600)+600);
}
}

task colicion() //para cuando choca con el muro, es decir cuando coleciones
{
while(true)
{
if(Sensor(IN_1)==1)
{
Acquire(mut);
TextOut(5,60,"Puntos");
NumOut(45,60,cont);
OnRev(OUT_AC,0);
PlayTone(5000,10000);
Wait(500);
PlayTone(2000,500);
Wait(500);
PlayTone(1000,500);
Wait(500);
PlayTone(0,500);
Wait(5000);
StopAllTasks();
Release(mut);
}

}
}

task partida()
{
while(true)
{
Acquire(mut);
OnRev(OUT_AC,speed);
Release(mut);
}
}



task main()
{

SetSensorLight(IN_2); //Definir y encender el sensor de luz, puerto 2
SetSensorSound(IN_3); //definir y encender el sensor de sonido, puerto 3
SetSensorTouch(IN_1); //definir y encender el sensor de tacto, puerto 1
Wait(500); //pausa de inicio
Precedes(music, luz,esquivar, musicspeed,colicion,partida);

}



No hay comentarios:

Publicar un comentario