在一个周期内,高电平时间占总体周期的比例,称之为占空比 (duty)。
例如PWM的控制周期为100ms,其中20ms为高电平,80ms为低电平,则占空比就是 20/100 = 20%。
注意有时候占空比有时候在嵌入式并不是百分比,而是参考其分辨率。
分辨率越高,也就意味着你可以调节的亮度的档位也就越高,引脚输出的平均电压处于0-3.3v之间 划分成1024份,你可以取其任意一个。
PWM的第二个属性是频率, 频率为控制周期T的倒数。在上面这个例子里面,100ms就是控制周期,那频率就是1s / 0.1s = 10HZ
频率的取值范围由硬件决定。
PWM脉宽调制定义了操作PWM的通用方法集合,包括:
共有14个引脚有PWM功能:
总共6组PWM。(注意,在Waffle Nano中3,4号引脚为python REPL代码交互用引脚,已被占用无法进行二次调用)
引脚 | 功能 |
---|---|
pin 7、pin 10 | PWM0 OUT |
pin 8、pin 9 | PWM1 OUT |
pin 2、pin 5、pin 11 | PWM2 OUT |
pin 0、pin 6、pin 12 | PWM3 OUT |
pin 1 | PWM4 OUT |
pin 14 | PWM5 OUT |
PWM可在所有输出引脚上启用。但其存在局限:须全部为同一频率,且仅有8个通道。
使用from machine import PWM
导入 machine
模块的脉宽调制类 PWM
再使用 TAB
按键来查看 PWM
中所包含的内容:
>>> from machine import PWM
>>>PWM.
deinit duty freq init
class machine.PWM(id, Pin(),freq,duty)
id :PWM组号。
Pin() :有PWM组号相应功能的引脚。
freq :频率,频率范围由硬件决定,最低输出频率为611赫兹,最高数据频率为65535赫兹。
duty :占空比,介于0至100的闭开区间。
利用类对象创建PWM
示例:
>>> from machine import Pin,PWM
>>> p = PWM(0, Pin(7),freq=2442,duty=50) #构建PWM 0对象,频率为2442赫兹,占空比为50%
在接下来的示例中, 构造id=0
的PWM
对象来列举PWM对象的函数。
>>>from machine import PWM
>>>pwm = PWM(0,Pin(7))#构建PWM0
pwm.init(freq ,duty)
函数说明:初始化PWM脉宽调制
参数含义同上文类构造一致
>>> from machine import Pin,PWM
>>> pwm = PWM(0,Pin(7))
>>> pwm.init(freq=2442,duty=50)#初始化PWM频率为2442,占空比为50
pwm.freq()
函数说明:设置PWM频率
频率范围由硬件决定
>>> from machine import Pin,PWM
>>> pwm = PWM(0,Pin(7))#创建PWM 0对象
>>> pwm.freq(2442)#设置PWM频率为2442
pwm.duty()
函数说明:设置PWM占空比
占空比为50%
>>> from machine import Pin,PWM
>>> pwm = PWM(0,Pin(7))#创建PWM 0对象
>>> pwm.duty(50)#设置PWM占空比为50%
pwm.deinit()
函数说明:pwm使用完了之后,需要销毁,释放资源,否则引脚将继续保持在PWM模式
>>> from machine import Pin,PWM
>>> pwm = PWM(0)#创建PWM 0对象
>>> pwm.deinit()#释放pwm 0资源
将waffle nano的一些GPIO引脚构造成PWM,设置其频率和占空比。
from machine import Pin,PWM
p = PWM(0, Pin(7))
p.freq(2442)
p.freq(3442)
p.duty(50)
p.deinit()
第一行导入machine
模块的硬件类Pin
和脉宽调制类PWM
第二行创建PWM
对象
PWM 0
三四行设置PWM 0的频率
第五行设置PWM 0的占空比为50%
第六行释放PWM 0资源
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарий ( 0 )