扩展设备操作
本页指令可以启用或禁用特定模块或者功能。
例如设置PWM的占空比、播放MIDI音乐等。
0xC0
启停:模块批量配置
批量启用或禁用功能模块。
功能模块开关参考列表,由对应二进制值的低数位到高数位:
bit | 功能 |
---|---|
0 | ADC模数转换器 |
1 | 温湿度传感器 |
2 | RTC时钟 |
3 | 颜色传感器 |
4 | 外置PWM发生器 |
5 | 位姿传感器 |
6 | 全彩色LED灯 |
7~11 | N/A 暂未开放 |
INST_ACTIVATE_MODULES | 编号 | OP-1 | |
---|---|---|---|
启用ADC模数转换器、PWM发生器、RTC时钟 | C0 | 0000 | 0015 |
上面使用的指令,对模块配置开关完整12个bit设置的数值为十六进制的0015
,对应二进制值:
表示对应启用了bit-4、bit-2和bit-0,也就是指令描述中提到的功能模块。
其他的功能模块则被设置为禁用状态。
info
OP/sOP | 取值 | 含义 |
---|---|---|
OP-0 | 0000 | 忽略 |
OP-1 | 0000 ~0FFF | 模块配置开关二进制值 |
tip
R28
为模块状态寄存器,可通过该寄存器查看当前已启用的模块或功能。
0xC1
启停:ADC模数转换器
启用或禁用ADC模数转换器模块。
tip
可以功能模块状态寄存器中查看当前状态。
INST_ACTIVATE_ADS | 编号 | sOP01 | ||
---|---|---|---|---|
启用ADC模数转换器 | C1 | 00 | 01 | 0000 |
info
OP/sOP | 取值 | 含义 |
---|---|---|
sOP00 | 00 | 忽略 |
sOP01 | 00 | 禁用模块 |
01 | 启用模块 | |
OP-1 | 0000 | 忽略 |
0xC2
启停:位姿传感器
启用或禁用位姿传感器模块。
tip
可以功能模块状态寄存器中查看当前状态。
INST_ACTIVATE_IMU | 编号 | sOP01 | ||
---|---|---|---|---|
启用位姿传感器 | C2 | 00 | 01 | 0000 |
info
OP/sOP | 取值 | 含义 |
---|---|---|
sOP00 | 00 | 忽略 |
sOP01 | 00 | 禁用模块 |
01 | 启用模块 | |
OP-1 | 0000 | 忽略 |
0xC3
启停:温湿度传感器
启用或禁用温湿度传感器模块。
tip
可以功能模块状态寄存器中查看当前状态。
INST_ACTIVATE_BME | 编号 | sOP01 | ||
---|---|---|---|---|
启用温湿度传感器 | C3 | 00 | 01 | 0000 |
info
OP/sOP | 取值 | 含义 |
---|---|---|
sOP00 | 00 | 忽略 |
sOP01 | 00 | 禁用模块 |
01 | 启用模块 | |
OP-1 | 0000 | 忽略 |
0xC4
启停:颜色传感器
启用或禁用颜色传感器模块。
tip
可以功能模块状态寄存器中查看当前状态。
INST_ACTIVATE_TCS | 编号 | sOP01 | ||
---|---|---|---|---|
启用颜色传感器 | C4 | 00 | 01 | 0000 |
info
OP/sOP | 取值 | 含义 |
---|---|---|
sOP00 | 00 | 忽略 |
sOP01 | 00 | 禁用模块 |
01 | 启用模块 | |
OP-1 | 0000 | 忽略 |
0xC5
启停:外置PWM发生器
启用或禁用外置PWM发生器模块。
tip
可以功能模块状态寄存器中查看当前状态。
INST_ACTIVATE_PCA | 编号 | sOP01 | ||
---|---|---|---|---|
启用外置PWM发生器 | C5 | 00 | 01 | 0000 |
info
OP/sOP | 取值 | 含义 |
---|---|---|
sOP00 | 00 | 忽略 |
sOP01 | 00 | 禁用模块 |
01 | 启用模块 | |
OP-1 | 0000 | 忽略 |
0xCB
启停:RTC时钟
启用或禁用RTC时钟模块。
tip
可以功能模块状态寄存器中查看当前状态。
INST_ACTIVATE_DS1307 | 编号 | sOP01 | ||
---|---|---|---|---|
启用RTC时钟 | C8 | 00 | 01 | 0000 |
info
OP/sOP | 取值 | 含义 |
---|---|---|
sOP00 | 00 | 忽略 |
sOP01 | 00 | 禁用模块 |
01 | 启用模块 | |
OP-1 | 0000 | 忽略 |
0xCC
启停:全彩色LED灯
启用或禁用全彩色LED灯。
tip
可以功能模块状态寄存器中查看当前状态。
INST_ACTIVATE_WS2812B | 编号 | sOP01 | ||
---|---|---|---|---|
启用全彩色LED灯 | CC | 00 | 01 | 0000 |
info
OP/sOP | 取值 | 含义 |
---|---|---|
sOP00 | 00 | 忽略 |
sOP01 | 00 | 禁用模块 |
01 | 启用模块 | |
OP-1 | 0000 | 忽略 |
0xDD
~0xDF
标记:当前行作为数据
对当前指令行作标记使用,系统运行时视作空指令跳过。
INST_DATA_LINE | 编号 | ||
---|---|---|---|
处理时忽略当前行指令 | DD ~DF | ABCD | BEEF |
info
OP/sOP | 取值 | 含义 |
---|---|---|
OP-0 | 0000 | 忽略 |
OP-1 | 0000 | 忽略 |
0xE0
设置:占用按键
设置在程序运行过程中,占用6个按键作为额外的输入。
程序结束时,占用即刻结束。
caution
在按键占用期间,如果需要调试程序,需要额外按下←
+↓
组合键
INST_USE_BUTTONS_IN_PROG | 编号 | ||
---|---|---|---|
程序运行时占用手柄输入按键 | E0 | 0000 | 0000 |
info
OP/sOP | 取值 | 含义 |
---|---|---|
OP-0 | 0000 | 忽略 |
OP-1 | 0000 | 忽略 |
0xE3
设置:RTC时钟
指定连续6个寄存器的存储值,为RTC时钟模块重设日期和时间。
6个寄存器对应分别记录年、月、日、时、分和秒。
tip
可以在辅助屏时间页查看RTC时钟当前设置的日期和时间
INST_SET_DATE_TIME | 编号 | sOP01 | ||
---|---|---|---|---|
使用R0A 开始6个连续寄存器值重设RTC时钟 | E3 | 00 | 05 | 0000 |
如果寄存器R0A
~R0F
存储值分别为:
寄存器 | 取值 |
---|---|
R0A | 07E4 |
R0B | 0004 |
R0C | 0004 |
R0D | 000A |
R0E | 0000 |
R0F | 0000 |
那么执行指令后,RTC时钟的日期和时间将重设为2020年年4月4日10:00'00"。
info
OP/sOP | 取值 | 含义 |
---|---|---|
sOP00 | 00 | 忽略 |
sOP01 | 00 ~3F | 指定起始寄存器编号 |
OP-1 | 0000 | 忽略 |
0xE4
设置:单独全彩LED
将指定全彩LED灯的颜色设置为指定值对应的RGB色。
INST_WS2812B_SET_COLOR | 编号 | sOP00 | sOP01 | sOP10 | sOP11 |
---|---|---|---|---|---|
设置00 号LED显示橙色 | E4 | 00 | FF | 80 | 00 |
info
OP/sOP | 取值 | 含义 |
---|---|---|
sOP00 | 00 ~0F | 指定LED灯编号 |
sOP01 | 00 ~FF | RGB红色通道值 |
sOP10 | 00 ~FF | RGB绿色通道值 |
sOP11 | 00 ~FF | RGB蓝色通道值 |
0xE5
设置:多个全彩LED
使用指定寄存器值,将对应选择的批量全彩LED指示灯的颜色设置为存储值对应的RGB色。
INST_WS2812B_REGx_SET_COLOR | 编号 | sOP00 | sOP01 | sOP10 | sOP11 |
---|---|---|---|---|---|
使用R31 开始3个连续寄存器高八位设置LED颜色 | E5 | 31 | 01 | 00 | 00 |
info
OP/sOP | 取值 | 含义 |
---|---|---|
sOP00 | 00 -3F | 寄存器编号 |
sOP01 | 00 | 使用各寄存器低八位 |
01 | 使用各寄存器高八位 | |
sOP10 | 00 - 0F | LED灯起始编号 |
sOP11 | 01 - 0F | LED灯的个数 |
上述范例中,OP01 取值01
,表示使用各寄存器数值的高八位作为颜色代码。假设R31
~R33
中保存的数值分别为:0x1521
、0x8377
和0xFF00
,则所选色彩值为0x1583FF
;这一色彩将被显示在0号彩色LED起,连续1个LED灯上(即只有0号LED亮起,0号为板载彩色LED)
0xE6
设置:LED灯显示模式
将全彩LED灯的显示设置为指定的模式。
INST_WS2812B_OP_SET_MODE | 编号 | sOP01 | ||
---|---|---|---|---|
设置LED显示为呼吸灯效果 | E6 | 00 | 02 | 0000 |
info
OP/sOP | 取值 | 含义 |
---|---|---|
sOP00 | 00 | 忽略 |
sOP01 | 00 | 全灭 |
01 | 当前颜色全亮 | |
02 | 当前颜色呼吸灯 | |
03 | 白色全亮 | |
OP-1 | 0000 | 忽略 |
0xE8
演奏指定音符
按照指定的音调和音符长度演奏音符。
INST_MELODY | 编号 | OP-0 | OP-1 | |
---|---|---|---|---|
演奏一个四分音符中音Si | E8 | 000E | 0007 |
info
OP/sOP | 取值 | 含义 |
---|---|---|
OP-0 | 01 ~07 | 低音Do~Si |
08 ~0E | 中音Do~Si | |
0F ~15 | 高音Do~Si | |
00 | 不演奏 | |
OP-1 | 0000 | 六十四分音符 |
0001 | 三十二分音符 | |
0002 | 附点三十二分音符 | |
0003 | 十六分音符 | |
0004 | 附点十六分音符 | |
0005 | 八分音符 | |
0006 | 附点八分音符 | |
0007 | 四分音符 | |
0008 | 二分音符 | |
0009 | 全音符 |
0xEB
设置:外置PWM发生器
取指定寄存器存储值按位选择PWM通道,将占空比设置为指定值。
INST_PCA9685_CHANNEL_REGB_REGV | 编号 | sOP01 | sOP11 | ||
---|---|---|---|---|---|
取寄存器R00 存储值按位选择PWM通道,将占空比设置为寄存器R02 存储值 | EB | 00 | 00 | 00 | 02 |
sOP01取值是00
,表示指定寄存器R00
存储值。
假设存储值是0087
,转换为二进制值:
按位对应由低到高,将第0、1、2和7号PWM通道设置为指定占空值。
占空值的最大取值为4096。
而sOP11取值是02
,表示指定寄存器R02
存储值。
假设存储值是0800
,转换为十进制值:
对应50%的最大取值范围,也就是50%占空比。
tip
关于PCA9685
芯片的占空比定可以参考对应数据手册。
编程器所用频率是50Hz,也就是20ms的周期,每个完整周期包含4096级。
info
OP/sOP | 取值 | 含义 |
---|---|---|
sOP00 | 00 | 忽略 |
sOP01 | 00 ~3F | 指定寄存器编号选择通道 |
sOP10 | 00 | 忽略 |
sOP11 | 00 ~3F | 指定寄存器编号获取占空值 |