完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
1个回答
|
|
玩游戏的小伙伴都知道,有的游戏需要使用游戏手柄体验才会更好,今天就我们来DIY一款自己专属的手柄!
1.设计思路 电脑游戏手柄和鼠标键盘一样属于USB HID设备,Window系统和Linux系统和各种游戏机系统都会自带此种设备的驱动,使用这种协议可以免装装驱动,即插即用。本次DIY使用单片机stm32f103c8t6,其自带USB资源,通过移植USB功能,修改相关配置和描述符,使其识别为USB-HID设备,再通过按键检测,检测到不用的按键就发送不同键值给电脑,以实现手柄不同的操作,实现原理同电脑键盘。 2.准备材料如下: 洞洞板5*7cm x2 按键12*12cm x10 按键帽 x8 按键6*6 x2 u***线micro转A口 x1 连接线 若干根 螺丝M3*6 若干个 螺丝M3*8 若干个 3.硬件制作 使用一块stm32f103c8t6的最小系统板,将其部分io口接入按键的一端,将按键的另外一端接地,设置stm32的这些io口内部上拉,这样当按键按下后,单片机既可检测到,并做出相关处理。 手柄的各个位置对应到stm32上面的引脚号如下: 4.软件调试 移植stm32官方的u***扩展代码,在此基础上修改如下描述符,定义设备属性和数据格式,在加上按键检测功能,根据不同按键响应发送不同的数据以实现控制。 下面介绍主要的USB需要配置的几个描述: 第1个:设备描述符DeviceDesciptor 第2个:配置描述符ConfigurationDescriptor 第3个:接口描述符InterfaceDescriptor 第4个:HID描述符HIDDescriptor HID设备专有的描述符,用于配置HID设备的属性和报告描述符的大小。 第5个:端点描述符EndpointDescriptor 端点描述符是用于配置端点号以及端点的输入输出。 第6个:报告描述符ReportDescriptor 报告描述符是HID设备专有的描述符,用于描述传输的数据的格式。 第7个:字符串描述符StringDescriptor 配置好描述符后,主要发送函数如下: 数据格式定义: 我们设定的一次发送的数据为9个字节,第1个字节默认0x1,第2个字节定义如下 第3个字保留位,后面几个字节为普通按键码。如发送01 02 00 04 05 00 00 00 00 表示同时按下Left_Shift + a + b 三个键。当然我们作为手柄不需要这么多按键功能,主要实现上下左右键,和A,B,X,Y键,ESC和Space键即可。需要什么按键功能,根据下图标准键值码值来进行设定修改代码。 5.外壳制作 使用proe5.0设计上下外壳如下: 外壳设计好之后,使用3D打印机打印外壳 将电路板装配进外壳里 全部安装完成后如下 6.测试使用 将手柄插入电脑后,识别为USB-HID设备 打开游戏测试,操作流畅! 至此,我们的USB电脑游戏手柄就完成啦 |
|
|
|
只有小组成员才能发言,加入小组>>
2629 浏览 0 评论
834浏览 1评论
293浏览 1评论
609浏览 0评论
335浏览 0评论
555浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-23 22:37 , Processed in 1.302136 second(s), Total 77, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191