这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【DIY手势翻页笔】手势翻页笔开发过程总结

共3条 1/1 1 跳转至

【DIY手势翻页笔】手势翻页笔开发过程总结

专家
2024-07-27 16:11:58     打赏

      感谢EEPW提供的DIY机会,可以跟着大佬一起学习,现将手势翻页笔制作过程简单总结如下。

     动手前先把大佬的教学视频认真看了一遍,虽然有些内容比较熟悉,所谓温故而知新嘛。看完教学视频,首先就是按大佬要求,把cubeMX升级到最新版本。

微信图片_升级cubeMX.png

    安装完之后重新启动进入,竟然报错:

微信图片_报错.png

    又以管理员身份重新升级一次,升级成功,我记得以前好像是不需要管理员身份就可以升级的,因为我对那个报错信息提示没有一点印象了。

     进入cubeMX开发环境之后就是根据项目需要进行各项配置,时钟,通讯接口,中间件等。


微信图片_cubeMX配置.png

    生成代码后进入keil环境,编译,没有任何报错。

    将手势传感器和板子连接好,这一步要做下改动,传感器连接线插头是2.0mm规格的,需要改成2.54规格的插头才能顺利插到开发板上,如下图所示:

微信图片_硬件接线图.png

    将程序下载到开发板,先测试下手势传感器的灵敏度,经过一小会的摸索,发现动作要干净利落,不要拖泥带水,容易让传感器误报,一次性完成9个动作。

微信图片_手势9个动作.png

    当然,到这一步只是完成传感器的动作采集,还有很重要的一步,就是如何把采集到的动作转换成电脑可以接受的翻页或其它动作,这就是下面这个函数所要实现的功能:

static VOID usbx_hidkeyboard_thread_entry(ULONG thread_input)  

{  

  /* USER CODE BEGIN app_ux_device_thread_entry */  

  UX_SLAVE_DEVICE *device;  

  UX_SLAVE_CLASS_HID_EVENT hid_event;  

  TX_PARAMETER_NOT_USED(thread_input);  

  device = &_ux_system_slave->ux_system_slave_device;  

  ux_utility_memory_set(&hid_event, 0, sizeof(UX_SLAVE_CLASS_HID_EVENT));  

    while(1)  

    {  

        /* Check if the device state already configured */  

        if((device->ux_slave_device_state == UX_DEVICE_CONFIGURED) && (hid_keyboard != UX_NULL))  

        {  

            /* sleep for 10ms */  

            tx_thread_sleep(MS_TO_TICK(100));  

            hid_event.ux_device_class_hid_event_length = 8;  

            hid_event.ux_device_class_hid_event_buffer[0] = 0;  

            hid_event.ux_device_class_hid_event_buffer[1] = 0;  

            uint16_t Gesture_Data = getGesture();  

            if(Gesture_Data != 0)  

            {  

                switch (Gesture_Data)      

                {  

                    case PAJ_UP:                              hid_event.ux_device_class_hid_event_buffer[2] = 0x4B;     break;  //Keyboard PageUp  

                    case PAJ_DOWN:                         hid_event.ux_device_class_hid_event_buffer[2] = 0x4E;     break;  //Keyboard PageDown  

                    case PAJ_LEFT:                         hid_event.ux_device_class_hid_event_buffer[2] = 0x50;     break;  //Keyboard LeftArrow  

                    case PAJ_RIGHT:                            hid_event.ux_device_class_hid_event_buffer[2] = 0x4F;     break;  //Keyboard RightArrow  

                    case PAJ_FORWARD:                    hid_event.ux_device_class_hid_event_buffer[2] = 0x4A;     break;  //Keyboard Home  

                    case PAJ_BACKWARD:                  hid_event.ux_device_class_hid_event_buffer[2] = 0x4D;     break;  //Keyboard End  

                    case PAJ_CLOCKWISE:                    hid_event.ux_device_class_hid_event_buffer[2] = 0x3E;     break;  //Keyboard F5  

                    case PAJ_ANTI_CLOCKWISE:       hid_event.ux_device_class_hid_event_buffer[2] = 0x29;     break;  //Keyboard Esc  

                    case PAJ_WAVE:                         break;  

                    default:    break;  

                }  

                ux_device_class_hid_event_set(hid_keyboard, &hid_event);  

            }else  

            {  

                hid_event.ux_device_class_hid_event_buffer[2] = 0;  

                ux_device_class_hid_event_set(hid_keyboard, &hid_event);  

            }  

        }else  

        {  

            /* sleep for 10ms */  

            tx_thread_sleep(MS_TO_TICK(10));  

        }  

        HAL_Delay(100);  

        HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);  

    }  

    /* USER CODE END app_ux_device_thread_entry */  

}

    手势翻页实际效果见下面的视频。

     https://www.bilibili.com/video/BV1bqv5eqEPY/

    最后感谢参加活动的各位大佬,正是有了你们的辛勤付出,才使得这次DIY圆满成功。




专家
2024-07-27 19:00:59     打赏
2楼

感谢分享


专家
2024-07-28 12:26:31     打赏
3楼

感谢分享


共3条 1/1 1 跳转至

回复

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