Разбираюсь с GyverPortal и использованием millis в нем

kmarakov

✩✩✩✩✩✩✩
29 Июн 2024
1
0
Здравствуйте. Есть esp8266, к которой по i2c подключен модуль расширения выходов на микросхеме PCF8574t. На esp крутится портал. Там есть много кнопок. По нажатию на кнопку, должен загораться светодиод на 5 секунд, потом гаснуть. В функции "void action()" millis не работает... Выношу действие в отдельную функцию, тоже не работает... Я так понимаю, что таймер на millis всегда должен выполняться в loop?
Подскажите, как лучше это обыграть? Сейчас у меня в loop только тик интерфейса.
C++:
void action() {
  pc1status =! PCF2.read(0);
  pc2status =! PCF2.read(1);

  if (ui.update()) {
    if (ui.update("led1")){
      ui.answer(pc1status);
    } else if (ui.update("led2")){
      ui.answer(pc2status);
    }
  }
 
  if (ui.click()) {
    if (ui.click("pc1pwr")) {
      PCF1.toggle(0);
    } else if (ui.click("pc1pwr5")) {
      // Тут должен зажигаться светодиод на 5 секунд
    } else if (ui.click("pc2pwr")) {
      PCF1.toggle(1);
    }
  }
}
C++:
void loop() {
  ui.tick();
}