一、器件知识:
认识手势模块的具体功能与参数
环境光免疫力:<100k Lux
红外LED和光学镜头,能在低光和黑暗环境下工作
其它的两个我这边就不介绍了,详细请看规格书。



二、具体预设实施方法:
PAJ7620U2+继电器实现手势控制实现方式
PAJ7620U2的驱动程序或库
将继电器的控制引脚连接到开发板的某个GPIO口上,PB0。(无源蜂鸣器,使用的是定时器3,通道3)
软件配置
根据手势映射的结果,通过GPIO控制继电器的开关,进而控制灯的亮灭。我这里最后还是用手去按下按键,本来是计划用手势去控制的,想了一下,为了区分,才用按键来操作。
在实际操作前,建议先进行软件测试和仿真,确保代码逻辑正确。然后进行硬件连接和测试,根据测试结果进行调试和优化。
三、流程图:

四、模块连接图:

五、核心代码:
// 无限循环,程序将一直执行此循环内的代码
while (1)
{
// 这里是留给用户添加代码的标记,但在这个代码段中没有实际的内容
/* USER CODE END WHILE */
// 这里是另一个留给用户添加代码的标记
/* USER CODE BEGIN 3 */
// 调用一个函数(可能是I2C通信的函数)来从某个地址(PAJ_INT_FLAG1)读取一个16位的数据
// 这个数据代表手势或设备的某种状态
Gesture_Data = DEV_I2C_ReadWord(PAJ_INT_FLAG1);
// 检查读取到的数据是否非零(即是否有手势或状态被识别)
if (Gesture_Data)
{
// 使用switch语句根据Gesture_Data的值来执行不同的操作
switch (Gesture_Data)
{
// 如果Gesture_Data等于HID_UP(可能是代表向上的手势)
case HID_UP:
// 设置HID_Mouse_SET为PapeToUp(可能是表示光标或鼠标向上移动的函数或命令)
HID_Mouse_SET=PapeToUp;
break;
// 如果Gesture_Data等于HID_DOWN(可能是代表向下的手势)
case HID_DOWN:
// 设置HID_Mouse_SET为PapeToUd(注意这里可能是个拼写错误,应该是PapeToDown或其他类似的)
HID_Mouse_SET=PapeToUd;
break;
// 如果Gesture_Data等于HID_LEFT(可能是代表向左的手势)
case HID_LEFT:
// 设置HID_Mouse_SET为CursorToLeft(表示光标或鼠标向左移动的函数或命令)
HID_Mouse_SET=CursorToLeft;
break;
// 如果Gesture_Data等于HID_RIGHT(可能是代表向右的手势)
case HID_RIGHT:
// 设置HID_Mouse_SET为CursorToRight(表示光标或鼠标向右移动的函数或命令)
HID_Mouse_SET=CursorToRight;
break;
// 以下的case语句都未给出具体的操作,只是简单地跳过了
case HID_FORWARD:
break;
case HID_BACKWARD:
break;
case HID_CLOCKWISE:
break;
case HID_COUNT_CLOCKWISE: // 注意这里可能是个拼写错误,应该是"COUNTER_CLOCKWISE"
break;
case HID_WAVE:
break;
// 如果Gesture_Data的值不是上述任何一个,则执行default分支(但在这里default分支也是空的)
default: break;
}
}
// 注意:在这个代码段中,没有显示`HID_Mouse_SET`是如何被使用的。通常,你可能需要在这个switch语句之后或某个地方调用这个变量所代表的函数或命令。
}六、设备管理器查看设备:
下图是接了开发板TYPE C的设备:

拿掉USB后的设备,少了一个:

七、使用CUBE MX配置步骤:
系统配置:

RCC配置:

定时器配置:

IIC配置:

USB配置:


串口配置:


GPIO配置:

系统时钟:

八、代码截图:
主函数HID判定:


GPIO初始化:

九、视频连接:
我要赚赏金
