PWM占空比调制是嵌入式系统很实用功能,常用于控制输出功率。下面用上次搭建的简易实验板演示如何使用PWM生成渐变的呼吸灯效果。
先打开串口终端,看看PWM命令语法:
=>pwm --help
usage: pwm [-i <pwm_index>] [-v <value>] [-f <frequency>] [-r <range>] [-n] [-I] [-D]
options:
-i/--index index from 0
-v/--value value param
-f/--frequency 1~100000(default 1000)hz
-r/--range default 100
-n/--number query
-I/--init init
-D/--deinit deinit
=>
实验板的PA0~PA3对应4个PWM输出,先初始化如下:
=>pwm -I
=>
此时4个输出口都已配置成默认的1kHz频率输出,50%占空比的方波,可调范围0~100。
将4个通道分别改成20%、40%、60%、80%。
=>pwm -i 0 -v 20
=>pwm -i 1 -v 40
=>pwm -i 2 -v 60
=>pwm -i 3 -v 80
=>
使用后同样需要释放资源。
=>pwm -D
=>
下面用Python控制三色LED交替实现呼吸灯效果。
# PWM breathing LEDs
import time
import math
from mcush import *
s = Mcush.Mcush('/dev/ttyACM0')
s.pwm_init(init_value=0)
while True:
for i in [0, 1, 2]:
t0 = time.time()
while True:
t = time.time()
if t > t0 + 2*math.pi:
break
val = int(100*(math.sin((t-t0)/2)**2))
s.pwm( index=i, value=val )
print( "%d %d" %(i, val) )
s.pwm( index=i, value=0 )