跳转至

红点激光器(Laser)设备组件

理论

RoboMaster RL35 红点激光器是专为 RoboMaster 机器人设计的一款辅助瞄准设备,可发射出点状、出瞳光束为 5 mm 的红色激光以辅助瞄准,如下图所示:

image-20221207205128088

使用时,将电源线(红色为正极,黑色为负极)接入开发板电压为 5V 的直流电源接口。可以直接操作引脚来开关设备;或通过 PWM 调节占空比以改变输出电压,来控制红点激光器亮度(对预分频值没有要求)。

以 RoboMaster 开发板 C 型为例,板上已集成一个可控的激光专用 5V 电源接口,如下图所示:

image-20221207204102515

对应的开关控制 IO 为 PC8,PWM 由 TIM3 CHANNEL3 输出。

快速开始

组件源码仓库地址:https://github.com/ZJU-HelloWorld/HW-Components

要在项目中使用该组件,需添加仓库内的以下文件:

Text Only
1
2
3
4
devices/dev_laser.c
devices/dev_laser.h
devices/dev_config.h
system.h

使用前准备

使用前需要做以下准备:

  • 在使用 STM32CubeMX 生成项目时,请在 Code Generator 界面 Enable Full Assert,来帮助断言设备驱动中的错误;在 main.c 中修改 assert_failed 函数以指示断言结果,如添加 while(1);
  • system.hsystem options: user config 处进行系统设置
  • dev_config.h 中设置 Conditional Compiling 选项,将使用到的设备对应的条件编译宏开关定义为 1.

示例

在项目中引用头文件:

C
#include "dev_config.h"

实例化一个红点激光器设备并初始化,默认使能,如:

C
Laser_t laser;
LaserInit(&laser, &HTIM_LASER, HTIM_CH_LASER, INIT_LUMIN_PERC); // init luminance percentage

设定红点激光器亮度百分数(0 - 100):

C
laser.setLumin(&laser, LUMIN_PERC); // luminance percentage

组件说明

Laser

属性

名称 类型 示例值 描述
htim TIM_HandleTypeDef* &htim1 时钟
tim_ch uint16_t TIM_CHANNEL_1 频道
lumin_percentage float 0 - 100 初始亮度百分数

方法

名称 参数说明 描述
LaserInit 传入时钟句柄指针、频道、初始亮度百分数 用传入的参数初始化一个红点激光器设备。
enable / 使能红点激光器设备。
disable / 失能红点激光器设备。
setLumin 传入目标亮度百分数 控制红点激光器亮度。
setMaxLumin / 控制红点激光器至最大亮度。

附录

版本说明

版本号 发布日期 说明 贡献者
2022.12.07 发布红点激光器组件 薛东来