PWM全称是脉冲宽度调制(Pulse width modulation
),也叫脉宽调制,从波形上看PWM就是方波。PWM的频率是1秒内有多少个方波脉冲,PWM的占空比是方波的一个周期内高电平所占的百分比。
介绍另一篇博文,对PWM的解释比较好:
https://blog.csdn.net/as480133937/article/details/103439546
从本专题的前几篇可以看到,树莓派Pico的GPIO可以输出高电平(可以点亮LED)或低电平(可以熄灭LED)。同时,树莓派的所有GPIO也都可以输出PWM,即按照一定的频率的高低电平的变化,而且频率和占空比可以很方便的设定和更改。
当然,按照之前闪烁LED的程序,GPIO实际上输出的也是PWM,只不过PWM的频率比较低(1Hz)。如果要提高频率、改变占空比的话,就要麻烦一些。 而按照直接输出PWM的方法,就非常的方便。
先来把闪烁LED的程序改为PWM输出的方式:
import time
from machine import Pin, PWM
# 设定GPIO25为PWM输出方式
pwm = PWM(Pin(25))
# 设定PWM的频率为10Hz,这是Pico的PWM输出的最低频率
pwm.freq(10)
# 设定PWM的占空比,取值范围0~65535, 而32768大约是一半,也就是50%
pwm.duty_u16(32768)
运行这段程序后,可以看到绿色LED
以10Hz的频率快速闪烁(树莓派Pico的PWM不能输出1Hz脉冲,也就不能让LED每1秒闪一次),而程序运行完毕后返回了命令提示符(如下所示),说明这段程序不是死循环,PWM是主芯片 “自动” 一直在输出的
MicroPython v1.16 on 2021-06-18; Raspberry Pi Pico with RP2040
Type "help()" for more information.
>>> %Run -c $EDITOR_CONTENT
>>>
</