第四课:PWM - 让LED"呼吸"起来
📌 学习目标
- 理解什么是 PWM
- 理解占空比的概念
- 学会用 PWM 控制 LED 亮度
- 制作 LED 呼吸灯效果
🎯 什么是 PWM?
PWM = Pulse Width Modulation = 脉冲宽度调制
形象的比喻
想象你在快速开关一盏灯:
- 开的时间长,关的时间短 → 灯看起来亮
- 开的时间短,关的时间长 → 灯看起来暗
- 开和关的时间相等 → 中等亮度
这就是 PWM 的基本原理!
📊 关键概念:占空比
占空比 = 高电平时间 ÷ 周期时间
| 占空比 | LED亮度 |
|---|---|
| 0% | 完全熄灭 |
| 25% | 较暗 |
| 50% | 中等亮度 |
| 75% | 较亮 |
| 100% | 最亮 |
🎛️ PWM 的常见用途
- 控制 LED 亮度(呼吸灯)
- 控制电机速度
- 产生声音(蜂鸣器)
- 舵机角度控制
🔧 在 JoyKit 中使用 PWM
JoyKit 内置了 WS2812B LED,可以通过指令控制颜色和亮度。
相关指令
| 指令 | 功能 |
|---|---|
0xE6 | 设置 LED 模式 |
0xE7 | 配置呼吸灯参数 |
0xE4 | 设置 LED 颜色 |
🔬 课堂演示项目:LED 呼吸灯
项目目标
让 LED 从暗到亮,再从亮到暗,循环往复,呈现"呼吸"效果。
硬件需求
- 板载 WS2812B LED
参考程序
; LED 呼吸灯项目
000 C7 0001 0000 ; 启用 WS2812B
001 E6 0002 0000 ; 设为呼吸模式
002 E7 000A 0000 ; 配置呼吸参数(步数=10,间隔=0,起始=0,结束=0)
003 E4 00FF 0000 ; 红色
004 02 0FA0 0000 ; 延时
005 0E 0003 0000 ; 循环
教学建议
- 改变颜色:R31/R32/R33 分别代表红/绿/蓝
- 改变速度:调整延时参数
- 加入按钮控制:按一下开始呼吸,再按一下停止
📈 观察 PWM 波形
如果你有示波器,可以观察 PWM 信号:
高电平 ████░░░░███░░░░
↑ ↑
开 关
时间 时间
- 高电平 = LED 亮
- 低电平 = LED 灭
- 高电平比例 = 亮度
💡 进阶:用代码模拟 PWM
虽然 JoyKit 有硬件 PWM,但我们可以用软件模拟:
; 软件模拟 PWM(简化版)
000 10 0000 0005 ; R0 = 5 (亮度)
001 01 0001 0000 ; LED开
002 02 0005 0000 ; 延时 R0
003 01 0000 0000 ; LED灭
004 02 000A 0000 ; 延时 (15-R0)
005 0E 0001 0000 ; 循环
🎉 小结
今天我们学到了:
- ✅ PWM = 脉冲宽度调制
- ✅ 占空比决定亮度
- ✅ JoyKit 的 LED 有硬件呼吸模式
- ✅ 完成了 LED 呼吸灯项目
- ✅ 可以用软件模拟 PWM
下一课我们将学习 I2C 协议,了解单片机如何与传感器通信!