Skip to main content

扩展设备操作

本页指令可以启用或禁用特定模块或者功能。

例如设置PWM的占空比、播放MIDI音乐等。

0xC0 启停:模块批量配置

批量启用或禁用功能模块。
功能模块开关参考列表,由对应二进制值的低数位到高数位:

bit功能
0ADC模数转换器
1温湿度传感器
2RTC时钟
3颜色传感器
4外置PWM发生器
5位姿传感器
6全彩色LED灯
7~11N/A 暂未开放
INST_ACTIVATE_MODULES编号OP-0OP-1
启用ADC模数转换器、PWM发生器、RTC时钟C000000015

上面使用的指令,对模块配置开关完整12个bit设置的数值为十六进制的0015,对应二进制值:

(0015)16=(0000  0001  0101)2(0015)_{16}=(0000\;0001\;0101)_{2}

表示对应启用了bit-4、bit-2和bit-0,也就是指令描述中提到的功能模块。
其他的功能模块则被设置为禁用状态。

info
OP/sOP取值含义
OP-00000忽略
OP-10000~0FFF模块配置开关二进制值
tip
  • R28为模块状态寄存器,可通过该寄存器查看当前已启用的模块或功能。

0xC1 启停:ADC模数转换器

启用或禁用ADC模数转换器模块。

tip

可以功能模块状态寄存器中查看当前状态。

INST_ACTIVATE_ADS编号sOP00sOP01OP-1
启用ADC模数转换器C100010000
info
OP/sOP取值含义
sOP0000忽略
sOP0100禁用模块
01启用模块
OP-10000忽略

0xC2 启停:位姿传感器

启用或禁用位姿传感器模块。

tip

可以功能模块状态寄存器中查看当前状态。

INST_ACTIVATE_IMU编号sOP00sOP01OP-1
启用位姿传感器C200010000
info
OP/sOP取值含义
sOP0000忽略
sOP0100禁用模块
01启用模块
OP-10000忽略

0xC3 启停:温湿度传感器

启用或禁用温湿度传感器模块。

tip

可以功能模块状态寄存器中查看当前状态。

INST_ACTIVATE_BME编号sOP00sOP01OP-1
启用温湿度传感器C300010000
info
OP/sOP取值含义
sOP0000忽略
sOP0100禁用模块
01启用模块
OP-10000忽略

0xC4 启停:颜色传感器

启用或禁用颜色传感器模块。

tip

可以功能模块状态寄存器中查看当前状态。

INST_ACTIVATE_TCS编号sOP00sOP01OP-1
启用颜色传感器C400010000
info
OP/sOP取值含义
sOP0000忽略
sOP0100禁用模块
01启用模块
OP-10000忽略

0xC5 启停:外置PWM发生器

启用或禁用外置PWM发生器模块。

tip

可以功能模块状态寄存器中查看当前状态。

INST_ACTIVATE_PCA编号sOP00sOP01OP-1
启用外置PWM发生器C500010000
info
OP/sOP取值含义
sOP0000忽略
sOP0100禁用模块
01启用模块
OP-10000忽略

0xCB 启停:RTC时钟

启用或禁用RTC时钟模块。

tip

可以功能模块状态寄存器中查看当前状态。

INST_ACTIVATE_DS1307编号sOP00sOP01OP-1
启用RTC时钟C800010000
info
OP/sOP取值含义
sOP0000忽略
sOP0100禁用模块
01启用模块
OP-10000忽略

0xCC 启停:全彩色LED灯

启用或禁用全彩色LED灯。

tip

可以功能模块状态寄存器中查看当前状态。

INST_ACTIVATE_WS2812B编号sOP00sOP01OP-1
启用全彩色LED灯CC00010000
info
OP/sOP取值含义
sOP0000忽略
sOP0100禁用模块
01启用模块
OP-10000忽略

0xDD~0xDF 标记:当前行作为数据

对当前指令行作标记使用,系统运行时视作空指令跳过。

INST_DATA_LINE编号OP-0OP-1
处理时忽略当前行指令DD~DFABCDBEEF
info
OP/sOP取值含义
OP-00000忽略
OP-10000忽略

0xE0 设置:占用按键

设置在程序运行过程中,占用6个按键作为额外的输入。
程序结束时,占用即刻结束。

caution

在按键占用期间,如果需要调试程序,需要额外按下+组合键

INST_USE_BUTTONS_IN_PROG编号OP-0OP-1
程序运行时占用手柄输入按键E000000000
info
OP/sOP取值含义
OP-00000忽略
OP-10000忽略

0xE3 设置:RTC时钟

指定连续6个寄存器的存储值,为RTC时钟模块重设日期和时间。
6个寄存器对应分别记录年、月、日、时、分和秒。

tip

可以在辅助屏时间页查看RTC时钟当前设置的日期和时间

INST_SET_DATE_TIME编号sOP00sOP01OP-1
使用R0A开始6个连续寄存器值重设RTC时钟E300050000

如果寄存器R0A~R0F存储值分别为:

寄存器取值
R0A07E4
R0B0004
R0C0004
R0D000A
R0E0000
R0F0000

那么执行指令后,RTC时钟的日期和时间将重设为2020年年4月4日10:00'00"

info
OP/sOP取值含义
sOP0000忽略
sOP0100~3F指定起始寄存器编号
OP-10000忽略

0xE4 设置:单独全彩LED

将指定全彩LED灯的颜色设置为指定值对应的RGB色。

INST_WS2812B_SET_COLOR编号sOP00sOP01sOP10sOP11
设置00号LED显示橙色E400FF8000
info
OP/sOP取值含义
sOP0000~0F指定LED灯编号
sOP0100~FFRGB红色通道值
sOP1000~FFRGB绿色通道值
sOP1100~FFRGB蓝色通道值

0xE5 设置:多个全彩LED

使用指定寄存器值,将对应选择的批量全彩LED指示灯的颜色设置为存储值对应的RGB色。

INST_WS2812B_REGx_SET_COLOR编号sOP00sOP01sOP10sOP11
使用R31开始3个连续寄存器高八位设置LED颜色E531010000
info
OP/sOP取值含义
sOP0000-3F寄存器编号
sOP0100使用各寄存器低八位
01使用各寄存器高八位
sOP1000 - 0FLED灯起始编号
sOP1101 - 0FLED灯的个数

上述范例中,OP01 取值01,表示使用各寄存器数值的高八位作为颜色代码。假设R31~R33中保存的数值分别为:0x15210x83770xFF00,则所选色彩值为0x1583FF;这一色彩将被显示在0号彩色LED起,连续1个LED灯上(即只有0号LED亮起,0号为板载彩色LED)

0xE6 设置:LED灯显示模式

将全彩LED灯的显示设置为指定的模式。

caution

在执行指令前,应当至少执行过一次E4或者E5指令指定LED灯的显示颜色。

INST_WS2812B_OP_SET_MODE编号sOP00sOP01OP-1
设置LED显示为呼吸灯效果E600020000
info
OP/sOP取值含义
sOP0000忽略
sOP0100全灭
01当前颜色全亮
02当前颜色呼吸灯
03白色全亮
OP-10000忽略

0xE8 演奏指定音符

按照指定的音调和音符长度演奏音符。

INST_MELODY编号OP-0OP-1
演奏一个四分音符中音SiE8000E0007
info
OP/sOP取值含义
OP-001~07低音Do~Si
08~0E中音Do~Si
0F~15高音Do~Si
00不演奏
OP-10000六十四分音符
0001三十二分音符
0002附点三十二分音符
0003十六分音符
0004附点十六分音符
0005八分音符
0006附点八分音符
0007四分音符
0008二分音符
0009全音符

0xEB 设置:外置PWM发生器

取指定寄存器存储值按位选择PWM通道,将占空比设置为指定值。

INST_PCA9685_CHANNEL_REGB_REGV编号sOP00sOP01sOP10sOP11
取寄存器R00存储值按位选择PWM通道,将占空比设置为寄存器R02存储值EB00000002

sOP01取值是00,表示指定寄存器R00存储值。
假设存储值是0087,转换为二进制值:

(0087)16=(0000  0000  1000  0111)2(0087)_{16}=(0000\;0000\;1000\;0111)_{2}

按位对应由低到高,将第0、1、2和7号PWM通道设置为指定占空值。
占空值的最大取值为4096
sOP11取值是02,表示指定寄存器R02存储值。
假设存储值是0800,转换为十进制值:

(0800)16=(2048)10(0800)_{16}=(2048)_{10}

对应50%的最大取值范围,也就是50%占空比。

tip

关于PCA9685芯片的占空比定可以参考对应数据手册。
编程器所用频率是50Hz,也就是20ms的周期,每个完整周期包含4096级。

info
OP/sOP取值含义
sOP0000忽略
sOP0100~3F指定寄存器编号选择通道
sOP1000忽略
sOP1100~3F指定寄存器编号获取占空值