这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【手势翻页笔】过程贴-实现PAJ7620数据的实时读取

共1条 1/1 1 跳转至

【手势翻页笔】过程贴-实现PAJ7620数据的实时读取

高工
2024-05-19 22:22:50     打赏

本次实用的是PAJ7620U2 手势传感器 Grove 平台评估扩展板,如下图:

1.png

PAJ7620一款光学数组式传感器,内置光源和环境光抑制滤波器集成的 LED,镜头和手势感测器在一个小的立方体模组,能在黑暗或低光环境下工作。同时传感器内置手势识别,支持 9个手势类型和输出的手势中断和结果,还提供接近检测功能,可用于感测物体接近或离开。工作原理是通过内部LED驱动器,驱动红外LED向外发射红外信号,当传感器阵列在有效地距离中探测到物体时,目标信息提取阵列会对探测目标进行特征原始数据地获取,获取数据会存在寄存器中,同时手势识别阵列会对原始数据进行识别处理,最后将手势结果存到寄存器中,用户可根据I2C接口对原始数据和手势数据地结果进行读取。

2.png

其中I2C_SCL和 I2C_SDA是连接 MCU的 IIC接口, 本模块没有INT引脚。

在PAJ7620内部有两个BANK 寄存器区域,分别是BANK0,BANK1。进入BANK0区域,往传感器0XEF地址写0X00。进入BANK1区域,往传感器0XEF地址写0x01。这方面的驱动文件还是通多的,这里我们通过改写其中一个驱动文件进行传感器的驱动。

在初始化部分对器件进行基本配置:

IIC1_port_Init();
/* 初始化PAJ7620模块 */
ret = PAJ7620_init();
if (ret != 0)
{
    printf("PAJ7620 init failed!\r\n");
    while (1)
    {
        HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
        delay_ms(1000);
    }
}
    
/* 配置ATK-MS7620模块为手势检测模式 */
ret = PAJ7620_mode_config(PAJ7620_MODE_GESTURE);
if (ret != 0)
{
    printf("PAJ7620 config failed!\r\n");
    while (1)
    {
        HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
        delay_ms(1000);
    }
}

printf("PAJ7620 config succedded!\r\n");

tx_app_thread_entry()中添加定时轮询检测程序:

time_cnt++;
if(time_cnt >= 200)
{
    time_cnt = 0;
    /* 获取手势 */
    ret = PAJ7620_get_gesture(&gesture);
    if (ret == PAJ7620_EOK)
    {
        switch (gesture)
        {
         case PAJ7620_GESTURE_UP:
         {
              printf("Gesture: Up\r\n");
              break;
         }
         case PAJ7620_GESTURE_DOWN:
         {
              printf("Gesture: Down\r\n");
              break;
         }
         case PAJ7620_GESTURE_LEFT:
         {
              printf("Gesture: Left\r\n");
              break;
         }
         case PAJ7620_GESTURE_RIGHT:
         {
              printf("Gesture: Right\r\n");
              break;
         }
         case PAJ7620_GESTURE_FORWARD:
         {
              printf("Gesture: Forward\r\n");
              break;
         }
             case PAJ7620_GESTURE_BACKWARD:
         {
              printf("Gesture: Backward\r\n");
              break;
         }
         case PAJ7620_GESTURE_CLOCKWISE:
         {
              printf("Gesture: Clockwise\r\n");
              break;
         }
         case PAJ7620_GESTURE_ANTICLOCKWISE:
         {
              printf("Gesture: Anticlockwise\r\n");
              break;
         }
         case PAJ7620_GESTURE_WAVE:
         {
              printf("Gesture: Wave\r\n");
              break;
         }
         default:
         {
              break;
         }
    }
}

下面我们就进行具体功能的测试,检测到对应的手势后通过串口进行报告:

3.png




关键词: 手势翻页笔     DIY     过程贴    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]