Discover more
脈寬調制(PWM)是指用(yòng)微處理(lǐ)器的(de)數字輸出來(lái)對(duì)模拟電路進行控制,是一種對(duì)模拟信号電平進行數字編碼的(de)方法。在樹莓派上,可(kě)以通(tōng)過對(duì)GPIO的(de)編程來(lái)實現PWM。
創建一個(gè) PWM 實例:
p = GPIO.PWM(channel, frequency)
啓用(yòng) PWM:
p.start(dc) # dc 代表占空比(範圍:0.0 <= dc >= 100.0)
更改頻(pín)率:
p.ChangeFrequency(freq) # freq 爲設置的(de)新頻(pín)率,單位爲 Hz
更改占空比:
p.ChangeDutyCycle(dc) # 範圍:0.0 <= dc >= 100.0
停止 PWM:
p.stop()注意,如果實例中的(de)變量“p”超出範圍,也(yě)會導緻 PWM 停止。
以下(xià)爲使 LED 每兩秒鐘(zhōng)閃爍一次的(de)示例:
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 中需要使用(yòng) raw_input p.stop() GPIO.cleanup()
以下(xià)爲使 LED 在亮/暗之間切換的(de)示例:
import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BOARD) GPIO.setup(12, GPIO.OUT) p = GPIO.PWM(12, 50) # 通(tōng)道爲 12 頻(pín)率爲 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()