K210学习篇(五)PWM

machine.PWM

PWM: 脉宽调制模块, 硬件支持的PWM, 可以指定任意引脚(0到47引脚)

每个 PWM 依赖于一个定时器, 即当定时器与 PWM 功能绑定后, 不能作为普通定时器使用了。 因为有 3 个定时器, 每个定时器有 4 个通道, 即最大可以同时产生 12 路 PWM 波形。

下面的示例会用到k210的蜂鸣器,这里给出原理图,可以知道蜂鸣器是接在了IO9上的 

老规矩先上例程:

'''
实验名称: PWM
版本: v1.0
日期: 2022.9
作者: 01Studio
说明:通过不同频率的 PWM 信号输出,驱动无源蜂鸣器发出不同频率的声音。
'''
from machine import Timer,PWM
import time

#PWM通过定时器配置,接到IO9引脚
tim = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PWM)
beep = PWM(tim, freq=1, duty=50, pin=9)

#循环发出不同频率响声。
while True:
    beep.freq(200)
    time.sleep(1)

    beep.freq(400)
    time.sleep(1)

    beep.freq(600)
    time.sleep(1)

    beep.freq(800)
    time.sleep(1)

    beep.freq(1000)
    time.sleep(1)

重要的API;

pwm = machine.PWM(tim, freq, duty, pin, enable=True)
参数:
  • tim: 每个PWM依赖一个定时器来产生波形, 所以这里需要传一个定时器对象,这个定时器对象必须初始化时必须指定定时器 ID 和通道号

  • freq: PWM 波形频率

  • duty: PWM 占空比, 指高电平占整个周期的百分比,取值:[0,100]

  • [pin]: PWM 输出引脚。 可以不设置,而是使用 fm 统一管理引脚映射。

  • enable: 是否立即开始产生波形,默认位True,及对象生成后立即开始在指定的引脚上产生 PWM 波形

相关的API

然后再给出一些相关的API便于使用

PWM波的使能

pwm.enable()

PWM的失能

pwm.disable()  #失能 PWM 输出, 指定的引脚不再产生波形

这里再上一个呼吸灯的例程:

from machine import Timer,PWM
import time


#呼吸灯例程
tim = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PWM)
ch = PWM(tim, freq=50000, duty=50, pin=35)
duty=0
dir = True
while True:
    if dir:
        duty += 10
    else:
        duty -= 10
    if duty>100:
        duty = 100
        dir = False
    elif duty<0:
        duty = 0
        dir = True
    time.sleep(0.05)
    ch.duty(duty)

老规矩给下官网的资料网站:

https://developer.canaan-creative.com/index.html?channel=developer#/document/canmv

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值