Saludos a todos, tengo un ligero problema, les explico, quiero hacer que mi robot (lego) nxt no se salga de un cuadro cuyo limite es una franja negra. Cuando el sensor de luz (IR) toque a la franja negra retroseda 1 segundo gire 90* y vuelva a caminar hacia adelante... E echo el programa en Bricx Command Center pero no logro que me funcione el sensor de luz aqui mas abajo les dejo el programa que ise para que me digan cual es mi error...
#include "NXCDefs.h"
#define UMBRAL 50
mutex moveMutex;
task mover()
{
while (true)
{
Acquire(moveMutex);
OnFwd(OUT_BC, 75);
Release(moveMutex);
}
}
task sensors()
{
while (true)
{
if (Sensor(IN_3) < UMBRAL)
{
Acquire(moveMutex);
OnRev(OUT_BC,75); Wait(500);
OnFwd(OUT_C,75); Wait(500);
Release(moveMutex);
}
}
}
task main()
{
Precedes(sensors, mover);
SetSensorLight(IN_3);
}
Nota: El me camina hacia delante pero cuando pasa por encima de la franja negra sigue igual caminando hacia delante, deveria retroceder y girar... Nose que e echo mal...
He comparado tu programna con el que aparece en el tutorial de NXC de Mario Benedetelli y la única diferencia significativa que encuentro es que no especifícas tiempo en el task mover
prueba esto:
task mover()
{
while (true)
{
Acquire(moveMutex);
OnFwd(OUT_BC, 75); Wait (50);
Release(moveMutex);
}
}
a ver si eso cambia el comportamiento