MicroPython 如此簡單: 計時與計次器

*** 廢話不多說, 直接展示 !! ***

範例一: 單次計時器

def doCallback():
print('Do callback function !!')
from My_Counter import myTimeCounter
tc = myTimeCounter()
tc.ONE_SHOT(3, doCallback) # 計時 3 秒後, 只執行 1 次
計時 3 秒後, 只執行 1 次即自動結束

範例二: 不限次計時器

tc.PERIODIC(0.5, doCallback)  # 計時 0.5 秒後, 切換 LED 開關, 不限次數
每隔 0.5 秒, 執行一次 doCallback 副程式, 且持續不限次數

範例三: 限次計時器

from machine import Pin
led = Pin(2, Pin.OUT)
def ledToggle():
led.value(not led.value())
from My_Counter import myTimeCounter
tc = myTimeCounter(0.5, 12, callback=ledToggle) # 計時 0.5 秒, 共 12 次 (預計來回閃爍 6 次)
while not tc.is_stop:
tc.check() # 檢查時間, 到時就執行 ledToggle

範例四: 定時四則計算器 (動態 Callback 的展示)

def multiplier(x, y):
print('{} * {} = {}'.format(x, y, x * y))
from My_Counter import myTimeCounter
tc = myTimeCounter(1, 10, callback=multiplier) # 每秒計算一次, 共 10 次

while not tc.is_stop:
x = int(time.ticks_cpu() % 10)
y = int(time.ticks_cpu() % 10)
tc.check(x, y) # tc 是個乘法器

範例五: 多個計時器同時計時

def hello(name='Nobody'):
print('Hello, {} !'.format(name))
from My_Counter import myTimeCounter
tc_1 = myTimeCounter(1, 5, callback=hello) # 計時 1 秒共 5 次
tc_2 = myTimeCounter(0.3, 10, callback=hello) # 計時 0.3 秒共 10 次

while not tc_1.is_stop or not tc_2.is_stop:
tc_1.check('Vincent')
tc_2.check('Yungger')
定時定次的結果如上, tc_1 叫了 5 次 Vincent, tc_2 叫了 10 Yungger。

範例六: RYB 三色跑馬燈

from machine import Pin
led_R = Pin(2, Pin.OUT)
led_Y = Pin(0, Pin.OUT)
led_G = Pin(4, Pin.OUT)
def ledToggle(led):
led.value(not led.value())
from My_Counter import myTimeCounter
tc = myTimeCounter(0.5, 12, callback=ledToggle) # 計時 0.2 秒共 60 次
leds = [led_R, led_Y, led_G]led_id = 0
while not tc.is_stop:
if tc.check(leds[led_id]):
led_id = tc.counter() % len(leds)

如此而已, 就是這麼簡單, 希望能對你有發生了一點點小幫助 !

--

--

Maker & Freelancer

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store