轉載自(樹莓派實驗室)
脈寬調製(PWM)是指用微處理器的數字輸出來對模擬電路進行控制,是一種對模擬信號電平進行數字編碼的方法。在樹莓派上,可以通過對GPIO的編程來實現PWM。
創建一個 PWM 實例:
1
|
p =
GPIO.PWM(channel, frequency) |
啓用 PWM:
1
|
p.start(dc) #
dc 代表佔空比(範圍:0.0 <= dc >= 100.0) |
更改頻率:
1
|
p.ChangeFrequency(freq) #
freq 爲設置的新頻率,單位爲 Hz |
更改佔空比:
1
|
p.ChangeDutyCycle(dc) #
範圍:0.0 <= dc >= 100.0 |
停止 PWM:
1
|
p.stop() |
注意,如果實例中的變量“p”超出範圍,也會導致 PWM 停止。
以下爲使 LED 每兩秒鐘閃爍一次的示例:
1
2
3
4
5
6
7
8
9
|
import
RPi.GPIO as GPIO GPIO.setmode(GPIO.BOARD) GPIO.setup( 12 ,
GPIO.OUT) p =
GPIO.PWM( 12 , 0.5 ) p.start( 1 ) input ( '點擊回車停止:' ) #
在 Python 2 中需要使用 raw_input p.stop() GPIO.cleanup() |
以下爲使 LED 在亮/暗之間切換的示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import
time import
RPi.GPIO as GPIO GPIO.setmode(GPIO.BOARD) GPIO.setup( 12 ,
GPIO.OUT) p =
GPIO.PWM( 12 , 50 ) #
通道爲 12 頻率爲 50Hz p.start( 0 ) try : while
1 : for
dc in
range ( 0 , 101 , 5 ): p.ChangeDutyCycle(dc) time.sleep( 0.1 ) for
dc in
range ( 100 , - 1 , - 5 ): p.ChangeDutyCycle(dc) time.sleep( 0.1 ) except
KeyboardInterrupt: pass p.stop() GPIO.cleanup() |
相關鏈接:
RPi.GPIO module PWM