Датчики света зяблика как предварительное условие для предотвращения препятствий

Я пытаюсь создать базовое поведение по обходу препятствий, но я хочу, чтобы оно функционировало, только если датчики освещенности превышают определенное значение.

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);
        }    
    }
}
Другие вопросы по тегам