红点激光器(Laser)设备组件¶
理论¶
RoboMaster RL35 红点激光器是专为 RoboMaster 机器人设计的一款辅助瞄准设备,可发射出点状、出瞳光束为 5 mm 的红色激光以辅助瞄准,如下图所示:
使用时,将电源线(红色为正极,黑色为负极)接入开发板电压为 5V 的直流电源接口。可以直接操作引脚来开关设备;或通过 PWM 调节占空比以改变输出电压,来控制红点激光器亮度(对预分频值没有要求)。
以 RoboMaster 开发板 C 型为例,板上已集成一个可控的激光专用 5V 电源接口,如下图所示:
对应的开关控制 IO 为 PC8,PWM 由
TIM3 CHANNEL3
输出。
快速开始¶
组件源码仓库地址:https://github.com/ZJU-HelloWorld/HW-Components
外设驱动配置¶
在使用 PWM 波控制红点激光器时,使用 CubeMX 配置时将对应定时器调整至合理频率(如 1kHz)。例如对于RoboMaster 开发板 C 型板载的红点激光器,驱动流程如下:
- 对于 TIM3,查看数据手册可知其挂载在 APB1 总线上,时钟频率 84MHz,为达到 1kHz 的频率 ,可将预分频值(Prescaler)设置为 83,计数周期(Counter Period)设置为 999。
使用前准备¶
使用前需要做以下准备:
- 在
config.cmake
文件中设置use_hwcomponents_devices_laser
选项为ON
,开启该设备文件的编译,若为OFF
则根驱动配置需求在CMakeLists.txt
文件中重配置为ON
。
示例¶
在项目中引用头文件:
实例化一个红点激光器设备并初始化,默认使能,如:
C++ | |
---|---|
设定红点激光器亮度百分数(0 - 100):
注意:由于内部使用了硬件句柄,因此如果计划将实例作为全局变量时(全局变量初始化时对应的硬件句柄可能会还未初始化完毕),建议采取一下方法:
- 声明指针,后续通过
new
的方式进行初始化。- 声明指针,后续通过返回函数(CreateXXXIns)中的静态变量(因为该变量只有在第一次调用该函数时才会运行初始化程序)进行初始化。
- 使用无参构造函数,后续调用
init
方法进行初始化。- 使用无参构造函数,后续使用拷贝赋值函数或是移动赋值函数进行初始化。
附录¶
版本说明¶
版本号 | 发布日期 | 说明 | 贡献者 |
---|---|---|---|
2022.12.07 | 发布红点激光器组件 | 薛东来 | |
2023.12.10 | 发布红点激光器组件(Cpp) | 蔡坤镇 |