家具外贸网站,福州网站建设报价,做企业网站到哪里找,太原网站制作费用《庐山派从入门到...》PWM板载蜂鸣器 配置PWM模块控制板载无源蜂鸣器播放【一闪一闪亮晶晶】播放do re mi 《庐山派从入门到...》PWM控制无源蜂鸣器 PWM#xff08;Pulse Width Modulation#xff0c;脉宽调制#xff09;是一种在嵌入式系统中常用的技术#xff0c;它可以用… 《庐山派从入门到...》PWM板载蜂鸣器 配置PWM模块控制板载无源蜂鸣器播放【一闪一闪亮晶晶】播放do re mi 《庐山派从入门到...》PWM控制无源蜂鸣器 PWMPulse Width Modulation脉宽调制是一种在嵌入式系统中常用的技术它可以用来模拟信号控制设备的功率输出或者实现对设备的精确控制。PWM信号是一种类似于方波的信号具有固定的频率但脉冲宽度占空比可以调整。 频率Frequency指PWM信号在一秒内循环的次数。频率是周期的倒数单位是赫兹Hz。 周期Period指一个完整的PWM信号的时间长度与频率成反比。单位是秒s。 脉宽Pulse Width指PWM信号中高电平通常为1的时间长度。单位是秒s或毫秒ms。 占空比(Duty Ratio)表示在一个完整的PWM信号周期内高电平通常为1所占的时间比例。占空比 脉宽 / 周期x 100%。 上升沿Rising EdgePWM信号从低电平跳变到高电平的瞬间通常用来作为触发事件。 下降沿Falling EdgePWM信号从高电平跳变到低电平的瞬间也常被用作触发事件。 正脉冲宽度Positive Pulse WidthPWM信号中高电平的持续时间一般情况下的脉宽指的就是这个。 负脉冲宽度Negative PulseWidthPWM信号中低电平的持续时间。 在嵌入式系统中PWM的应用场景非常广泛例如
电机控制通过调整PWM的占空比可以精确控制直流电机的转速。占空比越高电机转速越快占空比越低电机转速越慢。
LED亮度调节通过调整PWM的占空比可以实现对LED灯的亮度调节。占空比越高LED灯越亮占空比越低LED灯越暗。 这个就是我们的板载无源蜂鸣器了蜂鸣器可以将电信号转化为声音信号可以向用户提供声音反馈或者警报信号。 蜂鸣器从构造类型上有电磁式和电压式两种从驱动方式上来说有无源由外部方波驱动和有源由内部驱动外部给电就行两种这里选择的是无源电磁式贴片蜂鸣器工作电压2.5-4.5v频率4000Hz这里的频率是指他在这个频率下的声音最响。 可以用这个蜂鸣器来做人机交互的提示也可以用不同的PWM来驱动这个蜂鸣器来播放简单的纯音调音乐。
配置PWM模块
⚠️注意
K230 内部包含两个 PWM 硬件模块每个模块具有三个输出通道。每个模块的输出频率可调但三个通道共享同一时钟而占空比则可独立调整。因此通道 0、1 和 2 输出频率相同通道 3、4 和 5 输出频率也相同。这里优先考虑的是板载功能的互斥所以驱动蜂鸣器用的是PWM1,背光驱动用的是PWM5这两个PWM通道之间没有耦合可以随意调整。如果大家同时用到蜂鸣器和背光驱动的时候就要注意了如果此时使用排针的PWM信号那么他的频率也就是周期其实你已经不能改了否则就会互相影响。 要使用 machine.PWM首先需要导入该模块
from machine import PWM控制板载无源蜂鸣器
import time
from machine import PWM, FPIOA# 配置蜂鸣器IO口功能
beep_io FPIOA()
beep_io.set_function(43, FPIOA.PWM1)# 初始化蜂鸣器PWM通道
beep_pwm PWM(1, 4000, 50, enableFalse) # 默认频率4kHz,占空比50%# 使能PWM通道输出
beep_pwm.enable(1)
# 延时50ms
time.sleep_ms(50)
# 关闭PWM输出 防止蜂鸣器吵闹
beep_pwm.enable(0)
# 叫完了就释放PWM
beep_pwm.deinit()播放【一闪一闪亮晶晶】
import time
from machine import PWM, FPIOA# 配置蜂鸣器IO口功能
beep_io FPIOA()
beep_io.set_function(43, FPIOA.PWM1)# 初始化蜂鸣器
beep PWM(1, 1000, 50, enableFalse) # 默认频率1kHz,占空比50%# 定义音符频率以Hz为单位
notes {C4: 261,D4: 293,E4: 329,F4: 349,G4: 392,A4: 440,B4: 493,C5: 523
}# 定义《一闪一闪亮晶晶》旋律和节奏 (音符, 时长ms)
melody [(C4, 500), (C4, 500), (G4, 500), (G4, 500),(A4, 500), (A4, 500), (G4, 1000),(F4, 500), (F4, 500), (E4, 500), (E4, 500),(D4, 500), (D4, 500), (C4, 1000)
]def play_tone(note, duration):播放指定音符frequency notes.get(note, 0) # 获取音符对应的频率if frequency 0:beep.freq(frequency) # 设置频率beep.enable(True) # 启用蜂鸣器time.sleep_ms(duration) # 持续播放指定时间beep.enable(False) # 停止蜂鸣器time.sleep_ms(50) # 音符之间的短暂停顿# 播放旋律
for note, duration in melody:play_tone(note, duration)# 释放PWM资源
beep.deinit()播放do re mi
import time
from machine import PWM, FPIOA# 配置蜂鸣器IO口功能
beep_io FPIOA()
beep_io.set_function(43, FPIOA.PWM1)# 初始化蜂鸣器
beep PWM(1, 1000, 50, enableFalse) # 默认频率1kHz,占空比50%# 定义音符频率以Hz为单位
notes {do:523,re:587,mi:659,fa:698, so:784, la:880, si:988, }# 定义《一闪一闪亮晶晶》旋律和节奏 (音符, 时长ms)
melody [(do,500),(re, 500), (mi, 500), (fa, 500),(so,500),(la, 500), (si, 1000)
]def play_tone(note, duration):播放指定音符frequency notes.get(note, 0) # 获取音符对应的频率if frequency 0:beep.freq(frequency) # 设置频率beep.enable(True) # 启用蜂鸣器time.sleep_ms(duration) # 持续播放指定时间beep.enable(False) # 停止蜂鸣器time.sleep_ms(50) # 音符之间的短暂停顿# 播放旋律
for note, duration in melody:play_tone(note, duration)# 释放PWM资源
beep.deinit()