彩灯与音乐
本组指令驱动 WS2812B 全彩 LED 与发声器件。
WS2812B 模块可通过彩灯模块开关 0xCB 开启(2026-09 固件起开机自检自动开启);MIDI 播放需先用 Playtune 开关 0xD0 激活 Playtune 引擎。
0xE4 设置单灯颜色(CD)
按编号设置一颗 WS2812B 彩灯的颜色。每个颜色分量均为 8 位(0~255)。若当前模式为熄灭(OFF),自动转为点亮(ON)。
- 指令形式
- 助记符形式
000 E4 00FF 8000 LED 0 = 橙色 (FF8000)
001 E4 02FF 8000 LED2 = 橙色(P00=灯号 02,P01=红FF,P10=绿80,P11=蓝00)
002 E4 00FF 0000 LED0 = 纯红色
000 CD 00FF 8000 LED 0 = 橙色 (FF8000)
001 CD 02FF 8000 LED2 = 橙色(P00=灯号 02,P01=红FF,P10=绿80,P11=蓝00)
002 CD 00FF 0000 LED0 = 纯红色
| 占位符 | 取值范围 | 说明 |
|---|---|---|
| P00 | 00~0B | LED 编号(板载 12 颗) |
| P01 | 00~FF | 红色分量 |
| P10 | 00~FF | 绿色分量 |
| P11 | 00~FF | 蓝色分量 |
0xE5 寄存器组设灯色(RCD)
用三个连续寄存器 R[n]~R[n+2](R、G、B)中的颜色填充一段连续的彩灯。P01 选择取每个寄存器的哪个字节:00 = 低 8 位,其他值 = 高 8 位。若当前模式为熄灭,自动转为点亮。
- 指令形式
- 助记符形式
000 10 0010 1234 R10 = 1234
001 10 0011 5678 R11 = 5678
002 10 0012 9ABC R12 = 9ABC
003 E5 1001 0006 LED 0~5 = 颜色 12569A(取高字节)
004 E5 1000 0003 P01=00 取低字节:R10~R12 低字节作颜色,填充 LED0 起 3 颗
000 FZ 0010 1234 R10 = 1234
001 FZ 0011 5678 R11 = 5678
002 FZ 0012 9ABC R12 = 9ABC
003 RCD 1001 0006 LED 0~5 = 颜色 12569A(取高字节)
004 RCD 1000 0003 P01=00 取低字节:R10~R12 低字节作颜色,填充 LED0 起 3 颗
P01 = 01 时取 R10~R12 的高字节(12、56、9A)组成颜色 12569A;P01 = 00 时取低字节,组成 3478BC。
| 占位符 | 取值范围 | 说明 |
|---|---|---|
| P00 | 00~FF | 起始寄存器号 n(R[n]~R[n+2] = R、G、B) |
| P01 | 00 | 取每个寄存器的低 8 位 |
| 其他 | 取每个寄存器的高 8 位 | |
| P10 | 00~0B | 起始 LED 编号 |
| P11 | 01~0C | 填充的 LED 数量 |
0xE6 设置彩灯模式
设置 WS2812B 彩灯的工作模式。
000 E6 0002 0000 呼吸模式
| 占位符 | 取值范围 | 说明 |
|---|---|---|
| P00 | 00 | 忽略 |
| P01 | 00 | 熄灭(OFF) |
01 | 点亮(ON)— 显示 0xE4/0xE5 设置的颜色 | |
02 | 呼吸 | |
03 | 全白 | |
| P10 P11 | 0000 | 忽略 |
0xE7 设置呼吸参数
配置呼吸灯效果。必须先把模式设为呼吸(0xE6 的 P01 = 02)。
000 E6 0002 0000 先切换到呼吸模式
001 E7 05C0 000B 5 步、间隔 C0、LED 0~11
| 占位符 | 取值范围 | 说明 |
|---|---|---|
| P00 | 00~FF | 呼吸步数 |
| P01 | 00~FF | 呼吸间隔 |
| P10 | 00~0B | 起始 LED 编号 |
| P11 | 00~0B | 结束 LED 编号 |
0xE8 发音(FY)
让蜂鸣器发出一个音符。P00/P01 描述音高,P10/P11 描述时值。
音符字节(P01)高 4 位为八度(0~2),低 4 位为音名(1~7 = C D E F G A B)。越界值播放休止符。八度码 0/1/2 对应第 3/4/5 八度 — 例如 11 = C4、15 = G4、05 = G3。
| 占位符 | 取值范围 | 说明 |
|---|---|---|
| P00 | 00 | 本位音 |
01 | 升半音 ♯ | |
02 | 降半音 ♭ | |
| P01 | 高 4 位 0~2 | 八度 3/4/5 |
低 4 位 1~7 | 音名 1=C 2=D 3=E 4=F 5=G 6=A 7=B | |
| 其他 | 越界:休止符 | |
| P10 P11 | 0000~0009 | 时值档号,见下表(16 位整体) |
时值档(仅 0~9 档有效):
| 档号 | 时值 | 档号 | 时值 |
|---|---|---|---|
| 0 | 31 ms | 5 | 250 ms |
| 1 | 62 ms | 6 | 375 ms |
| 2 | 94 ms | 7 | 500 ms |
| 3 | 125 ms | 8 | 1000 ms |
| 4 | 187 ms | 9 | 2000 ms |
档号 ≥ 10 时静音。
课堂旋律创作中,档 3 / 5 / 7(125 / 250 / 500 ms) 覆盖绝大多数节奏型 — 大致对应中速下的十六分、八分和四分音符。
时值档必须写在 P10 P11 的低字节(P11),高字节 P10 恒为 00。若把档号误写进高字节 — 例如 E8 0015 0500 — 16 位整体值为 1280,≥ 10,该音符将静音。
- 指令形式
- 助记符形式
000 E8 0015 0007 G4,档 7(500 ms)
001 E8 0011 0005 C4,档 5(250 ms)
002 E8 0105 0003 G♯3,档 3(125 ms)
003 E8 0000 0003 音名越界 = 休止符
004 E8 0201 0005 C♭5(P00=02降半音,八度2音名1),档5=250ms
000 FY 0015 0007 G4,档 7(500 ms)
001 FY 0011 0005 C4,档 5(250 ms)
002 FY 0105 0003 G♯3,档 3(125 ms)
003 FY 0000 0003 音名越界 = 休止符
004 FY 0201 0005 C♭5(P00=02降半音,八度2音名1),档5=250ms
音符播放期间,旋律发生器临时占用板载蜂鸣器(PA1);播放结束后板载 PWM(PB3)恢复可用。
0xFE 播放 MIDI
通过 Playtune 引擎播放乐谱。播放前必须先用 Playtune 开关 0xD0 激活 Playtune。
000 D0 0000 0001 先激活 Playtune
001 FE 0000 0008 播放从 008 行开始的乐谱
002 0F 0000 0000 程序结束
自 008 行起存放乐谱数据。这些行不会被当作指令执行:播放是阻塞式的 — 程序等待乐曲播放完毕 — 且程序计数器自动跳过乐谱行。
| 占位符 | 取值范围 | 说明 |
|---|---|---|
| P00 | 00 | 忽略 |
| P01 | 00~FF | 乐谱首行行号 |
| P10 P11 | 0000 | 忽略 |