-2

我正在开发一个 Finch 机器人项目来检测物体,在其中一种方法中,如果 Finch 在 5 秒内检测到物体,我必须做一个 if 语句,我需要一个计时器类吗?请帮忙。(Java 新手)

如果 Finch 检测到物体 <= 5 秒,停止并将 LED 变为蓝色 ELSE 等待 1 秒并继续沿随机方向移动(我已经这样做了)

编辑:到目前为止我的代码:

公共静态无效ObjectEncountered(){

    while(true) {

        if(myfinch.isObstacle()== true){
            myfinch.setLED(0, 0, 255);
            myfinch.setWheelVelocities(0, 0); 
        }
        else {

            myfinch.setLED(0, 0, 0);
            random();


        }
    }

}
4

1 回答 1

0

我们需要更多代码来回答。如果您检测对象的方法总是立即返回,那么很容易保持循环,直到 System.currentTimeMillis() 显示的数字比您开始时大 5000 以上。但是,如果您检测对象的方法直到检测到某些东西(可能在 20 秒后)才返回,那么您将需要一些异步编程才能在 5 秒时将 LED 变为蓝色。

这种方法将涉及分离另一个线程来调用检测方法,然后等待它检测到某些东西或经过 5 秒。您可以使用 BlockingQueue 进行从一个线程到另一个线程的通信,因为这也提供了定时等待。如果 5 秒后不关心检测到的对象,可以让主线程中断检测线程,让它优雅地关闭。

于 2020-02-12T22:04:15.867 回答