Вам понадобится пара переменных: одна для отслеживания того, нажал ли пешеход кнопку (pedestrianIsWaiting
), а другая - время, когда пешеход нажал кнопку (changeTime
).
Каждый раз, когда вызывается функция loop
, проверяйте кнопку.Если кнопка нажата и пешеход уже не ждет, измените pedestrianIsWaiting
на true и запишите время в переменную changeTime
.
Затем, пока пешеход ждет, проверьте истекшее время,Если прошло 10 секунд, вызовите функцию и измените pedestrianIsWaiting
обратно на false.
Код выглядит следующим образом:
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;
}
}
}