|
|
|
|
MicroBit IO控制-->PWM |
|
|
|
|
|
|
|
|
PWM(Pulse Width Modulation)脈衝寬度調變控制 |
|
|
|
|
|
|
利用數位信號的時間差的控制,大多使用於控制伺服轉向機控制轉動角度等控制。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PWM利用固定的脈衝頻率中,高低電位的不同時間比例來進行強弱的控制,這稱為Duty Cycle,一般是以百分比%來定義。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Micro:Bit中,設定PWM輸出的方式,是以0~1023的數值來設定的,其中0就是0%的Duty Cycle,1023就是100%的Duty Cycle。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MicroPython的PWM控制-使用Mu Edit |
|
|
|
|
|
|
|
|
載入Micro:Bit硬體模組 |
|
|
|
|
|
程式一開始必須先載入Micro:Bit硬體模組,供後續程式呼叫使用Micro:Bit硬體的函式。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
指定使用的IO腳位 |
|
|
|
|
|
|
|
|
|
|
程式中指定要進行IO輸入或輸出的腳位,當進行輸入讀取或是輸出控制時,Micro:Bit便會從指定的腳位進行動作。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PWM的函式 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PWM信號週期時間設定 |
|
|
|
|
|
|
|
|
|
|
|
|
PWM信號的時間設定使用set_analog_period_microseconds()函式。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
set_analog_period_microseconds()函式的引數中輸入的值,指定的PWM信號每次產生的時間。設定的單位為microsecond(0.000001秒)。 |
|
|
|
|
|
|
|
|
|
|
|
|
PWM信號Duty Cycle強度設定 |
|
|
|
|
|
|
|
|
|
|
|
|
PWM控制使用write_analog()函式。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
write_analog ()函式的引數中輸入0~1023的值,指定的PWM腳位便會設定Duty Cycle信號的強度。 |
|
|
|
|
|
|
|
|
|
|
|
輸入值與Duty Cycle信號的強度的對應關係如下: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AI的程式範例 |
|
|
|
|
|
|
|
|
|
|
# 設定PWM信號週期時間為每個脈波週期256uS時間 |
|
|
|
|
|
|
pin1.set_analog_period_microseconds(256): |
|
|
|
|
|
|
|
|
|
|
|
|
|
# 將脈波寬度比例Duty Cycle設定為512(50%) |
|
|
|
|
|
|
pin1.write_analog(512): |
|
|
|
|
|
|
|
|
|
|
|
|
|
# 將脈波寬度比例Duty Cycle設定為0(0%) |
|
|
|
|
|
|
pin1.write_analog(0): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|