Java + Raspberry 程序关于特定时间的循环



首先,我对Java很陌生。在大学里,我们使用Raspberry pi 3和Java NetBeans进行编程。

我必须制作红绿灯。交通信号灯应在正常模式下工作 2 分 30 秒。然后它应该切换到闪烁的黄灯,应该工作 1 分钟,然后它应该关闭。在正常模式下,每个灯都没有特定的时间。我必须在上面写的时间范围内编写此代码:

// Normal mode for 2 minutes 30 seconds
red.on();
Thread.sleep(1000);
red.off();
Thread.sleep(100);
yellow.on();
Thread.sleep(1000);
yellow.off();
Thread.sleep(1000);
green.on();
Thread.sleep(1000);
green.off();
Thread.sleep(1000);
// Only yellow blinking for 1 minute
yellow.on();
Thread.sleep(1000);
yellow.off();
Thread.sleep(1000);
//Shutdown after 1 minute of yellow blinking
red.off();
yellow.off();
green.off();

如何在这些时间范围内放置这些模式?我以为我可以为他们使用for循环,但不知道如何设置正确的时间,也许任何其他选项或任何人都可以使用循环for

对不起,如果有些句子是错误的,因为英语不是我的第一语言。

您可以使用 while 循环。

// Normal mode for 2 minutes 30 seconds
int pauseTime = 1000
int normalElapsedTime = 0
int blinkingElapsedTime = 0
while (normalElapsedTime < (60000*2.5))
{
red.on();
Thread.sleep(pauseTime);
normalElapsedTime = normalElapsedTime  + pauseTime;
red.off();
Thread.sleep(pauseTime);
normalElapsedTime = normalElapsedTime  + pauseTime;
yellow.on();
Thread.sleep(pauseTime);
normalElapsedTime = normalElapsedTime  + pauseTime;
yellow.off();
Thread.sleep(pauseTime);
normalElapsedTime = normalElapsedTime  + pauseTime;
green.on();
Thread.sleep(pauseTime);
normalElapsedTime = normalElapsedTime  + pauseTime;
green.off();
Thread.sleep(pauseTime);
normalElapsedTime = normalElapsedTime  + pauseTime;
} //end while
// Only yellow blinking for 1 minute
while (blinkingElapsedTime < (60000*1))
{
yellow.on();
Thread.sleep(pauseTime);
blinkingElapsedTime = blinkingElapsedTime + pauseTime;
yellow.off();
Thread.sleep(pauseTime);
blinkingElapsedTime = blinkingElapsedTime + pauseTime;
} //end while
//Shutdown after 1 minute of yellow blinking
red.off();
yellow.off();
green.off();

最新更新