class Timer -- ตัวจับเวลาเสมือนแบบ periodic / one-shot

คลาส Timer ใช้งานตัวจับเวลาเสมือนที่จัดการด้วยซอฟต์แวร์ ซึ่งกำหนดเวลาคอลแบ็ก Python ครั้งเดียว (one-shot) หรือซ้ำ ๆ (periodic) ตามช่วงเวลาที่กำหนด ใช้เมื่อต้องการวิธีที่เบาและพกพาได้ข้ามพอร์ตในการรันคอลแบ็กตามกำหนดเวลา สำหรับฟีเจอร์ระดับฮาร์ดแวร์ (ช่อง PWM, input capture, encoder mode, dead-time, break input ฯลฯ) ให้ใช้ pyb.Timer แทน

มีบนทุกพอร์ต OpenMV

ตัวอย่าง -- คอลแบ็ก periodic 10 Hz:

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