找回密码
 立即注册
查看: 2799|回复: 16

51开源 USB-HID 手柄制作(三) 添加线性摇杆

[复制链接]
  • TA的每日心情
    奋斗
    4 天前
  • 签到天数: 142 天

    [LV.7]常住居民III

    29

    主题

    559

    回帖

    2118

    积分

    荣誉版主

    积分
    2118
    发表于 2023-9-6 10:50:59 | 显示全部楼层 |阅读模式
    51开源 USB-HID 手柄制作(三)   添加线性摇杆

    截图202310051809494094.jpg

    截图202310051809252498.jpg

    测试视频链接  
    【基于stc8h 的51增强型单片机的USB-HID手柄(三)】 https://www.bilibili.com/video/B ... e385881b75229fda25c

    试试嵌入代码能不能用


    注意本文使用了微软360手柄的PID VID ,仅供交流学习使用。

    本文使用设备描述符 等信息均来自互联网

    源码已上传附件

    这次的内容简单点

    增加个adc.c

    一个初始化 一个调用函数
    1. void ADC_Init(void)
    2. {
    3.     P1M0 |= 0x0a;
    4.     P1M1 |= 0x0a;
    5.     // P1PU |= 0x0a;
    6.     P_SW2 |= 0x80; // 扩展寄存器(XFR)访问使能
    7.     ADCTIM    = 0x3f; // 设置 ADC 内部时序,ADC采样时间建议设最大值
    8.     ADCCFG    = 0x2f; // 设置 ADC 时钟为系统时钟/2/16/16   右对齐
    9.     ADC_CONTR = 0x80; // 使能 ADC 模块
    10. }
    复制代码
    加一个函数处理ADC的值
    1. u16 joyConvert(BYTE chanel)
    2. {
    3.     u16 retValue          = 0;
    4.     u16 retValue1         = 0;
    5.     u16 retValue2         = 0;
    6.     u16 retValueAveragU16 = 0;
    7.     u16 retValueAverag    = 0;
    8.     _nop_();
    9.     retValue = Get_ADC12bitResult(chanel);
    10.     _nop_();
    11.     retValue1 = Get_ADC12bitResult(chanel);
    12.     _nop_();
    13.     retValue2 = Get_ADC12bitResult(chanel);
    14.     retValueAveragU16 = (retValue + retValue1 + retValue2) / 3;
    15.     if (retValueAveragU16 > 4000) {
    16.         retValueAverag = retValueAveragU16 - 2048;
    17.     } else if (retValueAveragU16 < 1600) {
    18.         retValueAverag = retValueAveragU16 - 2048;
    19.     } else {
    20.         retValueAverag = 0;
    21.     }
    22. #ifdef DEBUG
    23.     P6 = retValueAverag;
    24.     sprintf(p, "the joy is  %d", retValueAverag);
    25.     UartSendStr(p);
    26. #endif // DEBUG
    27.     return retValueAverag;
    28. }
    复制代码
    STC 的ADC 过于强大 有12位 ,这里取8位就好
    1.     LRXCode = joyConvert(1) >> 4;
    2.     LRYCode = joyConvert(3) >> 4;
    复制代码

    HID 手柄阶段3.7z

    119.99 KB, 下载次数: 102

    回复 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    4 天前
  • 签到天数: 142 天

    [LV.7]常住居民III

    29

    主题

    559

    回帖

    2118

    积分

    荣誉版主

    积分
    2118
     楼主| 发表于 2023-10-9 08:25:33 | 显示全部楼层
    本帖最后由 gentleman 于 2023-10-9 10:40 编辑

    这里也放一份基础版的源码

    发现论坛可以传大文件附件了,上位机的完整工程也放在这。





    gamepadG1S2.hex

    21.59 KB, 下载次数: 49

    G1S2固件

    手柄配置工具pre-2.0.7z

    3.08 MB, 下载次数: 59

    上位机工具

    UI.7z

    10.77 KB, 下载次数: 51

    上位机UI层

    DATA.7z

    8.02 KB, 下载次数: 52

    上位机数据层

    LOGIC.7z

    2.24 KB, 下载次数: 56

    上位机逻辑层

    gamepadG1S2.7z

    162.12 KB, 下载次数: 62

    手柄基础版工程源码

    手柄上位机pre-v2.0 源码.7z

    8.97 MB, 下载次数: 65

    上位机源码

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 22:26
  • 签到天数: 132 天

    [LV.7]常住居民III

    1

    主题

    80

    回帖

    837

    积分

    高级会员

    积分
    837
    发表于 2023-10-1 00:00:31 | 显示全部楼层
    学习了, 谢谢
    USB / CAN 专题免费教学会议通知:   
    USB 原理实战16课时10月/9号, 10月/11号; 10/16, 10/18;
    CAN 原理实战12课时10月/23号, 10月/25号; 10月/30;
    线上视频授课:周一下午/周三下午14:00 ~ 17:00;  
    腾讯会议号885-5858-2739; (安装腾讯会议软件后,输入会议号即可)

    https://www.stcaimcu.com/forum.php?mod=post&action=edit&fid=76&tid=4526&pid=30477&page=1

    请帮忙转发给可能需要:从0开始了解USBCAN同学/同事/老师/研发人员

    参会学习【免费+包邮USB核心功能实验板
    参会学习【免费+包邮CAN核心功能实验板,模拟的CAN收发器您自己补上

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    4 天前
  • 签到天数: 142 天

    [LV.7]常住居民III

    29

    主题

    559

    回帖

    2118

    积分

    荣誉版主

    积分
    2118
     楼主| 发表于 2023-10-1 14:46:31 | 显示全部楼层

    不用谢,后来上传了完整项目,你可以去看看
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 19:54
  • 签到天数: 134 天

    [LV.7]常住居民III

    1

    主题

    45

    回帖

    889

    积分

    高级会员

    积分
    889
    发表于 2023-10-7 11:19:06 | 显示全部楼层
    支持
    回复 送花

    使用道具 举报

    该用户从未签到

    0

    主题

    2

    回帖

    30

    积分

    新手上路

    积分
    30
    发表于 2023-10-7 14:49:54 | 显示全部楼层
    大佬,这个能不能读取游戏状态啊,比如普通手柄的震动,或者更高级的角色或者内部装备的后坐力 车辆的上下浮动数据,这个可以做体感游戏的开发
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    4 天前
  • 签到天数: 142 天

    [LV.7]常住居民III

    29

    主题

    559

    回帖

    2118

    积分

    荣誉版主

    积分
    2118
     楼主| 发表于 2023-10-7 16:58:35 | 显示全部楼层
    本帖最后由 gentleman 于 2023-10-7 17:03 编辑
    罗程峰820 发表于 2023-10-7 14:49
    大佬,这个能不能读取游戏状态啊,比如普通手柄的震动,或者更高级的角色或者内部装备的后坐力 车辆的上下 ...

    理论上是可以的,可以考虑加入后续的更新计划。
    但除了震动之外,你说的其他功能要有相应的游戏支持(要不我再做个开源的游戏)。



    其实最新版本固件就用到了了读取 pc端hid数据的功能--读取PC上位机数据。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    551

    主题

    9307

    回帖

    1万

    积分

    管理员

    积分
    14067
    发表于 2023-10-7 18:54:53 | 显示全部楼层
    玩出 STC-USB 芯高度
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    4 天前
  • 签到天数: 142 天

    [LV.7]常住居民III

    29

    主题

    559

    回帖

    2118

    积分

    荣誉版主

    积分
    2118
     楼主| 发表于 2023-10-7 19:09:22 | 显示全部楼层
    神农鼎 发表于 2023-10-7 18:54
    玩出 STC-USB 芯高度

    是 stc 的芯片性能强
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-2-20 17:22
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    0

    主题

    6

    回帖

    76

    积分

    注册会员

    积分
    76
    发表于 2023-10-11 17:31:21 | 显示全部楼层
    请问,有测试过摇杆数据通过USB发送到电脑的延时吗?

    点评

    我好像设置的是20ms 准备一次数据。 在定时器设置里,可以自己改。  详情 回复 发表于 2023-10-11 18:53
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-4 00:47 , Processed in 0.382642 second(s), 71 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表