你需要一些变量:一个是跟踪行人是否按下了按钮( pedestrianIsWaiting ),另一个是行人按下按钮的时间( changeTime )。
pedestrianIsWaiting
changeTime
每一次 loop 调用函数,检查按钮。如果按下按钮且行人尚未等待,则更改 pedestrianIsWaiting 为真,记录时间 changeTime 变量。
loop
然后在行人等待时,检查经过的时间。如果是10秒钟,请调用该功能,然后进行更改 pedestrianIsWaiting 回到假。
代码如下所示:
bool pedestrianIsWaiting = false; unsigned long changeTime; void loop() { int buttonState = digitalRead(pushButton); if (buttonState == HIGH && !pedestrianIsWaiting) { pedestrianIsWaiting = true; changeTime = millis(); } if (pedestrianIsWaiting) { unsigned long elapsedTime = millis() - changeTime; if (elapsedTime >= 10000) { changeLights(); pedestrianIsWaiting = false; } } }