接下來我們就來試一試,通過PWM讓一個(gè)LED實(shí)現(xiàn)不同亮度的變化,也就是我們常見的呼吸燈了。
硬件接線
還是用這個(gè)LED燈,一端連接電阻,再到5V高電平的引腳,另外一端,接到33號(hào)引腳的PWM接口。
運(yùn)行示例程序
大家先來運(yùn)行例程,看看效果如何。
$ sudo python3 simple_pwm.py
我們來看一下實(shí)物的操作,按照剛才的設(shè)置,將實(shí)物連接完成,然后連接到X3Pi,運(yùn)行剛才的程序。就可以看到這樣的一個(gè)呼吸燈的效果了。
代碼解析
simple_pwm.py:
#!/usr/bin/env python3
import Hobot.GPIO as GPIO
import time
# 支持PWM的管腳: 32 and 33, 在使用PWM時(shí),必須確保該管腳沒有被其他功能占用
output_pin = 33
def main():
# Pin Setup:
# Board pin-numbering scheme
GPIO.setmode(GPIO.BOARD)
# 支持的頻率范圍:48KHz ~ 192MHz
p = GPIO.PWM(output_pin, 48000)
# 初始占空比 25%, 先每0.25秒增加5%占空比,達(dá)到100%之后再每0.25秒減少5%占空比
val = 25
incr = 5
p.ChangeDutyCycle(val)
p.start(val)
print("PWM running. Press CTRL+C to exit.")
try:
while True:
time.sleep(0.25)
if val >= 100:
incr = -incr
if val <= 0:
incr = -incr
val += incr
p.ChangeDutyCycle(val)
finally:
p.stop()
GPIO.cleanup()
if __name__ == '__main__':
main()
一樣的引入GPIO的庫,然后設(shè)置管腳編碼模式為BOARD,然后創(chuàng)建一個(gè)PWM的實(shí)例化對象p,同時(shí)設(shè)置他的頻率,之后就可以通過ChangeDutyCycle來改變他的占空比,在循環(huán)當(dāng)中,占空比大于等于100時(shí),就會(huì)以5%的梯度減??;當(dāng)小于等于0時(shí),就會(huì)以5%的梯度增大。
-
led
+關(guān)注
關(guān)注
240文章
23063瀏覽量
657067 -
電阻
+關(guān)注
關(guān)注
86文章
5447瀏覽量
171474 -
PWM
+關(guān)注
關(guān)注
114文章
5118瀏覽量
213168
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論