Система таймеров на ESP

Во всех прошивках ESP начиная от версии 627 используется система таймеров, позволяющая выполнять действия через определенное время и определенное количество раз не блокируя ресурсы ESP.

Основание для разработки

Допустим, надо 5 раз моргнуть светодиодной лентой в процессе игры.

Без системы таймеров есть 2 варианта реализации:

  1. Отсчитывать количество морганий и время на сервере и на каждое загорание и погашение светодиодки отправлять по событию. Как итог получаем большую нагрузку на сервер, все устройства, получающие лишние события, WiFi сеть и Socket.

  2. Отправлять 1 событие на моргание 5 раз и выставлять задержки в пределах одной алгоритмической линии. В этом случае ESP не может принимать события Socket.IO и выполнять что-либо кроме моргания светодиодки. (проверку сенсоров, управление лазерами, калибровку и др.)

Принцип работы

При системе таймеров есть возможность по 1 событию добавить в очередь задач всего 2 функции (загорание и погашение светодиодки) и установить данному таймеру следующие свойства:

  • выполняемая функция
  • время до первого выполнения
  • интервал между повторениями
  • количество повторений
  • действие, выполняемое после последнего выполнения функции

Далее в процессе выполнения кода в цикле проверяются все функции, которые еще предстоит выполнить и сравнивается по времени работы контроллера, не пришло ли время выполнить функцию.

Posts

subscribe via RSS