4.K230 PWM的玩法
# K230 PWM的玩法
# 1. 什么是PWM?
PWM(Pulse Width Modulation,脉宽调制)是一种常用于控制电气设备的技术,能通过调节信号的占空比来模拟模拟信号,从而控制功率、电压或亮度等参数。
# 🔧 PWM的关键参数
参数 | 含义 |
---|---|
频率 | 信号1秒内重复的次数,单位Hz |
占空比 | 一个周期内高电平持续时间的比例,单位% |
分辨率 | 控制占空比精度的能力(比如8位表示可分为256档) |
# 2. K230的PWM能力概览
K230支持多个硬件PWM通道,通过 FPIOA(现场可编程IO阵列) 可将任意GPIO映射为PWM输出,为你带来极大的控制灵活性。典型应用包括蜂鸣器、LED调光、电机调速等。
# 3. 示例一:控制蜂鸣器发声
import time
from machine import PWM, FPIOA
# 设置GPIO43为PWM1功能
fpioa = FPIOA()
fpioa.set_function(43, FPIOA.PWM1)
# 初始化PWM通道1:4kHz频率,50%占空比
beep = PWM(1, freq=4000, duty=50, enable=False)
# 发声
beep.enable(True)
time.sleep_ms(50)
beep.enable(False)
# 清理资源
beep.deinit()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 💡说明:
- PWM频率4kHz是人耳可听范围内的标准蜂鸣器驱动频率
enable()
控制是否发声deinit()
用于释放PWM资源
# 4. 示例二:播放《一闪一闪亮晶晶》
import time
from machine import PWM, FPIOA
fpioa = FPIOA()
fpioa.set_function(43, FPIOA.PWM1)
beep = PWM(1, 1000, 50, enable=False)
notes = {
'C4': 261, 'D4': 293, 'E4': 329, 'F4': 349,
'G4': 392, 'A4': 440, 'B4': 493, 'C5': 523
}
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):
freq = notes.get(note, 0)
if freq > 0:
beep.freq(freq)
beep.enable(True)
time.sleep_ms(duration)
beep.enable(False)
time.sleep_ms(50)
for note, duration in melody:
play_tone(note, duration)
beep.deinit()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 5. 核心知识点解析
# ✅ 引脚配置
- 使用
FPIOA.set_function(pin, FPIOA.PWMx)
映射功能 - 示例中 GPIO43 被映射为 PWM1 输出
# ✅ PWM初始化
PWM(channel, freq, duty, enable=False)
1
channel
: PWM通道(0~3)freq
: 输出频率(Hz)duty
: 占空比(百分比,0~100)
# ✅ 发声逻辑
enable(True)
开启发声enable(False)
静音- 音符之间要有空隙,否则听起来像“噪声汤”
# 6. 常见应用场景
应用 | 描述 |
---|---|
无源蜂鸣器 | 利用PWM发出不同频率的音调 |
LED调光 | 改变占空比控制亮度 |
电机控制 | 占空比调节转速 |
舵机驱动 | 特定频率和占空比的控制脉冲 |
# 7. 注意事项
- 无源蜂鸣器必须用PWM驱动,有源则不需要
- 不同硬件对PWM频率和占空比的反应不同,需根据器件调试
- 使用完PWM记得调用
.deinit()
释放资源 - 占空比设为 0 或 100 也等效于低/高电平输出,适用于测试
# 8. 参考资料
- K230 PWM文档 (opens new window)
- MicroPython PWM模块官方手册
# 免责声明
本文档及所有内容(包括文字、图片、代码等)均为作者基于嘉立创庐山派K230开发板公开资料和个人使用经验整理分享,仅供学习和技术交流之用。
所有涉及的品牌名称、商标、图片及相关资源均归嘉立创官方所有,未经授权不得用于商业宣传或其他用途。
作者与嘉立创官方无任何隶属或代理关系,内容不构成任何形式的官方承诺或保证。
用户在使用相关资源时,应遵守相应的开源协议和法律法规,确保合法合规。
如涉及版权问题,请联系作者或嘉立创官方处理。
帮助我们改善此页面 (opens new window)
上次更新: 2025/07/12, 16:01:22