跳到主要内容

彩灯与音乐

本组指令驱动 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 = 纯红色
信息
占位符取值范围说明
P0000~0BLED 编号(板载 12 颗)
P0100~FF红色分量
P1000~FF绿色分量
P1100~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 颗

P01 = 01 时取 R10~R12 的高字节(12、56、9A)组成颜色 12569A;P01 = 00 时取低字节,组成 3478BC。

信息
占位符取值范围说明
P0000~FF起始寄存器号 n(R[n]~R[n+2] = R、G、B)
P0100取每个寄存器的低 8 位
其他取每个寄存器的高 8 位
P1000~0B起始 LED 编号
P1101~0C填充的 LED 数量

0xE6 设置彩灯模式​

设置 WS2812B 彩灯的工作模式。

    000  E6  0002  0000    呼吸模式
信息
占位符取值范围说明
P0000忽略
P0100熄灭(OFF)
01点亮(ON)— 显示 0xE4/0xE5 设置的颜色
02呼吸
03全白
P10 P110000忽略

0xE7 设置呼吸参数​

配置呼吸灯效果。必须先把模式设为呼吸(0xE6 的 P01 = 02)。

    000  E6  0002  0000    先切换到呼吸模式
001 E7 05C0 000B 5 步、间隔 C0、LED 0~11
信息
占位符取值范围说明
P0000~FF呼吸步数
P0100~FF呼吸间隔
P1000~0B起始 LED 编号
P1100~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。

信息
占位符取值范围说明
P0000本位音
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 P110000~0009时值档号,见下表(16 位整体)

时值档(仅 0~9 档有效):

档号时值档号时值
031 ms5250 ms
162 ms6375 ms
294 ms7500 ms
3125 ms81000 ms
4187 ms92000 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
备注

音符播放期间,旋律发生器临时占用板载蜂鸣器(PA1);播放结束后板载 PWM(PB3)恢复可用。

0xFE 播放 MIDI​

通过 Playtune 引擎播放乐谱。播放前必须先用 Playtune 开关 0xD0 激活 Playtune。

    000  D0  0000  0001    先激活 Playtune
001 FE 0000 0008 播放从 008 行开始的乐谱
002 0F 0000 0000 程序结束

自 008 行起存放乐谱数据。这些行不会被当作指令执行:播放是阻塞式的 — 程序等待乐曲播放完毕 — 且程序计数器自动跳过乐谱行。

信息
占位符取值范围说明
P0000忽略
P0100~FF乐谱首行行号
P10 P110000忽略