клас Timer – віртуальний одноразовий / переодичний таймер

Клас Timer реалізує програмно керований віртуальний таймер, який планує виклик зворотного виклику Python або одноразово (one-shot), або повторно (periodic) із заданим періодом. Використовуйте його, коли потрібен легкий переносимий між портами спосіб виконувати зворотний виклик за розкладом – для функцій апаратного рівня (канали PWM, захоплення вхідного сигналу, режим енкодера, мертвий час, вхід переривання тощо) використовуйте pyb.Timer.

Доступно на кожному порту OpenMV.

Приклад – переодичний зворотний виклик 10 Гц:

from machine import Timer

def tick(t):
    print("tick")

tim = Timer(-1)
tim.init(period=100, callback=tick)   # 100 ms = 10 Hz

Приклад – виконання зворотного виклику одноразово через 2 секунди:

from machine import Timer

def fire(t):
    print("once")

Timer(-1).init(mode=Timer.ONE_SHOT, period=2000, callback=fire)

Конструктори

class machine.Timer(id: int = -1, /, *, mode: int = PERIODIC, period: int = -1, callback: Callable[[Timer], None] | None = None)

Створює віртуальний Timer. id повинен бути -1 (єдине підтримуване значення). Будь-які іменні аргументи передаються до init(), тому таймер можна налаштувати одним викликом.

Методи

init(*, mode: int = PERIODIC, period: int = -1, callback: Callable[[Timer], None] | None = None) None

Ініціалізує / повторно ініціалізує таймер.

  • mode вибирає ONE_SHOT (спрацювати один раз і зупинитися) або PERIODIC (спрацьовувати повторно).

  • period – це період у мілісекундах.

  • callback викликається при спрацюванні таймера. Він отримує екземпляр Timer як єдиний аргумент.

deinit() None

Зупиняє таймер і скасовує будь-який відкладений зворотний виклик.

Константи

ONE_SHOT: int

Передається до mode, щоб таймер спрацював один раз і потім зупинився.

PERIODIC: int

Передається до mode, щоб таймер спрацьовував повторно з інтервалами period.