Датчики света зяблика как предварительное условие для предотвращения препятствий
Я пытаюсь создать базовое поведение по обходу препятствий, но я хочу, чтобы оно функционировало, только если датчики освещенности превышают определенное значение.
while (!myFinch.isBeakDown())
{
myFinch.getLeftLightSensor();
light = myFinch.getLeftLightSensor();
if (light >= 20)
{
if (myFinch.isObstacleLeftSide())
{
myFinch.setWheelVelocities(-255,-255,750);
myFinch.setWheelVelocities(100,-255, 500);
}
else if (myFinch.isObstacleRightSide())
{
myFinch.setWheelVelocities(-255,-255,750);
myFinch.setWheelVelocities(-255, 100, 500);
}
else
{
myFinch.setWheelVelocities(255,255);
}
}
}
РЕДАКТИРОВАТЬ код предупреждения рабочих препятствий без предварительного тестирования. Предотвращение препятствий работает без предварительного тестирования света, и я также проверил ИК-датчики в тесте датчика netbeans.
// Run so long as the Finch is not pointed beak down
while(!myFinch.isBeakDown())
{
if(myFinch.isObstacleLeftSide())
{
myFinch.setWheelVelocities(-255,-255,750);
myFinch.setWheelVelocities(100,-255, 500);
}
// If there's an obstacle on the right, set LED blue, back up for 750 ms
// and turn for 500 ms
else if(myFinch.isObstacleRightSide())
{
myFinch.setWheelVelocities(-255,-255,750);
myFinch.setWheelVelocities(-255, 100, 500);
}
// Else, robot goes straight
else
{
myFinch.setWheelVelocities(255,255);
}
}
1 ответ
Значение light
никогда не обновляется, используйте
while (!myFinch.isBeakDown())
{
light = myFinch.getLeftLightSensor();
myFinch.sleep(1);
if (light >= 20)
{
if (myFinch.isObstacleLeftSide())
{
myFinch.setWheelVelocities(-255,-255,750);
myFinch.setWheelVelocities(100,-255, 500);
}
else if (myFinch.isObstacleRightSide())
{
myFinch.setWheelVelocities(-255,-255,750);
myFinch.setWheelVelocities(-255, 100, 500);
}
else
{
myFinch.setWheelVelocities(255,255);
}
}
}