TGFC俱乐部>>经典游戏怀旧专区>>
- 刷新/显图/登录/注册/WEB
标题:Github上的手柄转接项目求助
时间:20-09-16 22:20
作者:threek

posted by wap, platform: iPhone
不知道哪里问,这里大神多,求助求助。
我是新手,想请教一个github导入aduino项目的问题(手柄转接)。
项目链接https://github.com/nzgamer41/iona-psx

是不是把iona-346文件夹里的jvsio和psx两个文件夹导入aduino库(复制到安装文件夹的libraries目录),然后再把iona-346文件夹里的inoa-346.ino刷到uno里面,是这个流程么?


我今天这么做了,电路链接也反复确认了,但做出来的转接器naomi识别不了,不知道哪里出了问题。

本帖最后由 threek 于 2020-9-16 22:26 通过手机版编辑





回复列表 (31)
#2 threek 2020-9-16 22:21
posted by wap, platform: iPhone
Aduino和github 今天刚接触,还请大神不要笑话我。

===================
#3 micjil 2020-9-17 00:20
PSX的引脚定义好像有问题,data, cmnd, att, clock在原理图上分别是D9, D10, D11, D12;但是代码里使用的分别是8,9,11,12。
Psx.setupPins(8, 9, 11, 12, 10);

这个方法的定义是这样的:
Psx.setupPins(byte , byte , byte , byte , byte); // (Data Pin #, CMND Pin #, ATT Pin #, CLK Pin #, Delay)

===================
#4 threek 2020-9-17 00:24
posted by wap, platform: iPhone
原帖由 @micjil 于 2020-9-17 00:20 发表
PSX的引脚定义好像有问题,data, cmnd, att, clock在原理图上分别是D9, D10, D11, D12;但是代码里使用的分别是8,9,11,12。
Psx.setupPins(8, 9, 11, 12, 10);

这个方法的定义是这样的:
Psx.setupPins(byte , byte , byte , byte , byte); // (Data Pin #, CMND Pin #, ATT Pin #, CLK Pin #, Delay)
太细心了,感谢,我明天测试下。

===================
#5 threek 2020-9-17 00:33
posted by wap, platform: iPhone
原帖由 @micjil 于 2020-9-17 00:20 发表
PSX的引脚定义好像有问题,data, cmnd, att, clock在原理图上分别是D9, D10, D11, D12;但是代码里使用的分别是8,9,11,12。
Psx.setupPins(8, 9, 11, 12, 10);

这个方法的定义是这样的:
Psx.setupPins(byte , byte , byte , byte , byte); // (Data Pin #, CMND Pin #, ATT Pin #, CLK Pin #, Delay)
另外请教下,我这个项目导入aduino的方法是否正确?

===================
#6 micjil 2020-9-17 00:44
只要编译通过就可以。最简单的方法是把项目放到Arduino的Sketchbook location下,这样就不需要手动拷贝库,Arduino会自动搜索子目录。



===================
#7 threek 2020-9-17 00:54
posted by wap, platform: iPhone
原帖由 @micjil 于 2020-9-17 00:44 发表
只要编译通过就可以。最简单的方法是把项目放到Arduino的Sketchbook location下,这样就不需要手动拷贝库,Arduino会自动搜索子目录。
了解

===================
#8 threek 2020-9-17 09:33
posted by wap, platform: iPhone
我把引脚定义改了回来,然后接ps2手柄按键后,uno上的rx0灯有闪烁了,但是naomi还是识别不出[尴尬]
请教了高手,说是要做485转换电路,一脸懵逼啊。

===================
#9 VODKA 2020-9-17 11:01
posted by wap, platform: Lenovo
能编译通过就说明库引用正确了

===================
#10 micjil 2020-9-17 14:43
JVS I/O的物理层是基于RS-485,与RS-232主要区别就是RS-485传输的是差分信号。jvsio这个库提供了差分信号的生成,应该是可以按照电路图直连的,不需要再做转换。主要检查下,USB端口的3,4是否连接对了,文档上特别提到了这个。
JVS文档:http://superusr.free.fr/arcade/JVS/JVST_VER3.pdf

这里有用Teensy加RS485模块,自制IO板连接Naomi的视频,视频里进Test模式的JVS Test,可以看到IO版的信息。
https://youtu.be/nQ9IQh23H0I

===================
#11 threek 2020-9-17 14:51
posted by wap, platform: iPhone
原帖由 @micjil 于 2020-9-17 14:43 发表
JVS I/O的物理层是基于RS485,与RS232主要区别就是RS485传输的是差分信号。jvsio这个库提供了差分信号的生成,应该是可以按照电路图直连的,不需要再做转换。主要检查下,USB端口的3,4是否连接对了,文档上特别提到了这个。
JVS文档:http://superusr.free.fr/arcade/JVS/JVST_VER3.pdf

这里有用Teensy加RS485模块,自制IO板连接Naomi的视频,视频里进Test模式的JVS Test,可以看到IO版的信息。
https://youtu.be/nQ9IQh23H0I
Iona的项目里还特别说了,有文档说3-4和普通usb-b是相反的,但他测试了,结果是完全一致,也就是说jvs文档上面是错的。

===================
#12 micjil 2020-9-17 15:01
可以先进Test模式,JVS Test,检查下能否识别到信息。如果没有检测到,那估计JVS通讯这部分代码可能有问题。

===================
#13 threek 2020-9-19 00:06
posted by wap, platform: iPhone
原帖由 @micjil 于 2020-9-17 15:01 发表
可以先进Test模式,JVS Test,检查下能否识别到信息。如果没有检测到,那估计JVS通讯这部分代码可能有问题。
识别不到,作者也联系不上。
他发布的帖子

https://www.arcade-projects.com/forums/index.php?thread/14451-iona-psx-an-open-source-playstation-1-2-controller-to-jvs-solution/

===================
#14 micjil 2020-9-19 15:09
原帖由 threek 于 2020-9-19 00:06 发表
posted by wap, platform: iPhone
识别不到,作者也联系不上。
他发布的帖子

https://www.arcade-projects.com/ ... troller-to-jvs-solu ...


作者那个帖子里使用的电路图有些不一样,github里readme里D3连接JVS Sense加了电阻和电容,但是帖子里作者弄的电路板都是直连的。可以先按照作者的这个sch重新连接电路试试,PS接线在sch里是9, 10, 11, 12,代码还是要改成一样的。

这个是作者自己弄的PCB https://github.com/nzgamer41/IONA-PSX-PCB/,用Eagle打开IONA-PSX.sch文件确认D3是直连的。

除了软件和电路连接,可能还需要排查硬件的问题,比如Arduino的供电,可以试试USB充电头、USB充电宝或者从Naomi那边提供+5V供电,有条件可以换一块Arduino试试。

如果还是不行,可以试试 https://github.com/toyoshim/iona-346,这个是连接SS手柄的,估计PSX版的作者是参考的这个。SS版的这个,D3那里用到了电阻和电容,和PS版不一样。按理说JSVIO通讯那部分是一样的,可以只连接JVSIO的那部分电路,上传SS版的这个到Arduino,看系统能不能检测到IO板。

===================
#15 threek 2020-9-19 16:09
posted by wap, platform: iPhone
原帖由 @micjil 于 2020-9-19 15:09 发表
作者那个帖子里使用的电路图有些不一样,github里readme里D3连接JVS Sense加了电阻和电容,但是帖子里作者弄的电路板都是直连的。可以先按照作者的这个sch重新连接电路试试,PS接线在sch里是9, 10, 11, 12,代码还是要改成一样的。

这个是作者自己弄的PCB https://github.com/nzgamer41/IONAPSXPCB/,用Eagle打开IONAPSX.sch文件确认D3是直连的。

除了软件和电路连接,可能还需要排查硬件的问题,比如Arduino的供电,可以试试USB充电头、USB充电宝或者从Naomi那边提供+5V供电,有条件可以换一块Arduino试试。

如果还是不行,可以试试 https://github.com/toyoshim/iona346,这个是连接SS手柄的,估计PSX版的作者是参考的这个。SS版的这个,D3那里用到了电阻和电容,和PS版不一样。按理说JSVIO通讯那部分是一样的,可以只连接JVSIO的那部分电路,上传SS版的这个到Arduino,看系统能不能检测到IO板。
SS的这个我也弄了,但是编译一直不通过,显示缺少jvsio库里面的nanoclient文件,但我有这个文件啊,路径也对的。用nano和uno都试了,都不行。

===================
#16 micjil 2020-9-19 17:13
原帖由 threek 于 2020-9-19 16:09 发表
posted by wap, platform: iPhone
SS的这个我也弄了,但是编译一直不通过,显示缺少jvsio库里面的nanoclient文件,但我有这个文件啊,路径也对的。用nano和uno都试了,都不行。


SS的这个git工程用了submodule,而且指定了特定的版本,需要用到git命令行clone工程,然后初始化submodule才能用。

git如果不熟悉,可以按照下面的步骤操作:

  • 先下载git工具并安装 https://git-scm.com/download/win
  • 然后运行Git Bash,先切换路径(比如需要下载项目到C:\Workspace\git)。在bash哪里输入cd /c/Workspace/git
  • 克隆工程 git clone https://github.com/toyoshim/iona-346.git
  • clone完成后,进入该路径 cd iona-346
  • 然后用文本编辑软件修改下 .gitmodules文件,切换到https协议。url = git@github.com:toyoshim/jvsio.git 这一行需要修改成 url = https://github.com/toyoshim/jvsio.git
  • 接着在bash窗口执行同步 git submodule sync
  • 最后是初始化子模块,git会下载指定版本的子模块 git submodule update --init --recursive


弄完后,把这个工程目录放到sketchbook目录下,就可以编译了。我这边试过,可以成功编译。

===================
#17 threek 2020-9-19 17:42
posted by wap, platform: iPhone
原帖由 @micjil 于 2020-9-19 17:13 发表
SS的这个git工程用了submodule,而且指定了特定的版本,需要用到git命令行clone工程,然后初始化submodule才能用。

git如果不熟悉,可以按照下面的步骤操作:

先下载git工具并安装 https://gitscm.com/download/win
然后运行Git Bash,先切换路径(比如需要下载项目到C:Workspacegit)。在bash哪里输入cd /c/Workspace/git
克隆工程 git clone https://github.com/toyoshim/iona346.git
clone完成后,进入该路径 cd iona346
然后用文本编辑软件修改下 .gitmodules文件,切换到https协议。url = git@github.com:toyoshim/jvsio.git 这一行需要修改成 url = https://github.com/toyoshim/jvsio.git
接着在bash窗口执行同步 git submodule sync
最后是初始化子模块,git会下载指定版本的子模块 git submodule update init recursive


弄完后,把这个工程目录放到sketchbook目录下,就可以编译了。我这边试过,可以成功编译。
谢谢了,另外sketchbook目录在哪里?我找了半天没找到

===================
#18 micjil 2020-9-19 18:01
原帖由 threek 于 2020-9-19 17:42 发表
posted by wap, platform: iPhone
谢谢了,另外sketchbook目录在哪里?我找了半天没找到


在Arduino IDE的Preferences设置界面,Settings标签下面的Sketchbook location

===================
#19 threek 2020-9-19 23:54
posted by wap, platform: iPhone
原帖由 @micjil 于 2020-9-19 18:01 发表
在Arduino IDE的Preferences设置界面,Settings标签下面的Sketchbook location
我是中文版的aduino 1.8.13
选择文件-首选项- 然后里面只有 项目文件夹位置这个选项,里面的有libraries和sketch-sep16a这两个文件夹,后者好像是我最近保存的一个项目。但还是找不到你说的sketchbook文件夹

===================
#20 micjil 2020-9-19 23:58
原帖由 threek 于 2020-9-19 23:54 发表
posted by wap, platform: iPhone
我是中文版的aduino 1.8.13
选择文件-首选项- 然后里面只有 项目文件夹位置这个选项,里面的有libraries和sketch-sep16a这两个文件夹,后者好像是我最近保存的一个项目。但还是找不 ...


嗯,就是项目文件夹。

===================
#21 threek 2020-9-20 00:15
posted by wap, platform: iPhone
原帖由 @micjil 于 2020-9-19 23:58 发表
嗯,就是项目文件夹。
请教下,如何看出来这个项目需要用到submodule?



===================
#22 micjil 2020-9-20 00:35
原帖由 threek 于 2020-9-20 00:15 发表
posted by wap, platform: iPhone
请教下,如何看出来这个项目需要用到submodule?


git项目根目录有.gitmodules文件,有这个文件就表示该项目会引用到其它git项目,直接clone或者下载zip会发现某些目录是空的,必须要再更新submodule才会下载缺失的文件。git submodule 具体细节可以上网搜索。如果配置了ssh key,可以直接用命令 git clone --recurse-submodules -j8 git://github.com/foo/bar.git 同时克隆工程加初始化子模块。

===================
#23 threek 2020-9-20 00:39
posted by wap, platform: iPhone
原帖由 @micjil 于 2020-9-19 15:09 发表
作者那个帖子里使用的电路图有些不一样,github里readme里D3连接JVS Sense加了电阻和电容,但是帖子里作者弄的电路板都是直连的。可以先按照作者的这个sch重新连接电路试试,PS接线在sch里是9, 10, 11, 12,代码还是要改成一样的。

这个是作者自己弄的PCB https://github.com/nzgamer41/IONAPSXPCB/,用Eagle打开IONAPSX.sch文件确认D3是直连的。

除了软件和电路连接,可能还需要排查硬件的问题,比如Arduino的供电,可以试试USB充电头、USB充电宝或者从Naomi那边提供+5V供电,有条件可以换一块Arduino试试。

如果还是不行,可以试试 https://github.com/toyoshim/iona346,这个是连接SS手柄的,估计PSX版的作者是参考的这个。SS版的这个,D3那里用到了电阻和电容,和PS版不一样。按理说JSVIO通讯那部分是一样的,可以只连接JVSIO的那部分电路,上传SS版的这个到Arduino,看系统能不能检测到IO板。
Saturn的识别成功!
你太牛了,感谢感谢!

===================
#24 threek 2020-9-20 00:40
posted by wap, platform: iPhone
而且,saturn的我并没有加电容电阻,直连的,接下来我把saturn接线弄一下,看看手柄是否正常

===================
#25 threek 2020-9-20 01:30
posted by wap, platform: iPhone
Saturn转接器制作成功了,不过他的程序里面把拳和脚弄反了,我学要改一下代码。

===================
#26 threek 2020-9-26 14:50
posted by wap, platform: iPhone
问题解决了,原因是multidefinition。
quote]原帖由 micjil 于 2020-9-20 00:35 发表 http://club.tgfcer.com/images/common/back.gif



git项目根目录有.gitmodules文件,有这个文件就表示该项目会引用到其它git项目,直接clone或者下载zip会发现某些目录是空的,必须要再更新submodule才会下载缺失的文件。git submodule 具体细节可以上网搜索。如 ... [/quote]

在做另一个USB to DB15转接器编译遇到如下错误,还请教一下。 原文链接 https://www.arcade-projects.com/ ... apter/&pageNo=1
Github地址 https://github.com/Raphfriend/USB2DB15

Arduino:1.8.13 (Windows 10), 开发板:"Arduino Uno"



C:\Users\kof9xddt\AppData\Local\Temp\arduino_build_588202\libraries\RFUSB_to_DB15\drivers.cpp.o (symbol from plugin): In function `generateDPad(unsigned char, HIDController*)':

(.text+0x0): multiple definition of `setupController(unsigned int, unsigned int, HIDController*)'

C:\Users\kof9xddt\AppData\Local\Temp\arduino_build_588202\sketch\drivers.cpp.o (symbol from plugin):伤心:.text+0x0): first defined here

collect2.exe: error: ld returned 1 exit status

使用库 RFUSB_to_DB15 在文件夹: C:\Users\kof9xddt\Documents\Arduino\libraries\RFUSB_to_DB15 (legacy)

使用 1.3.2 版本的库 USB_Host_Shield_2.0-master 在文件夹: C:\Users\kof9xddt\Documents\Arduino\libraries\USB_Host_Shield_2.0-master

使用 1.0 版本的库 SPI 在文件夹: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI

使用 2.0 版本的库 EEPROM 在文件夹: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM

exit status 1

为开发板 Arduino Uno 编译时出错。

本帖最后由 threek 于 2020-9-26 18:23 通过手机版编辑

===================
#27 sfczhw 2020-9-26 20:54
好帖子,学习了,正打算搞我新弄得naomi

===================
#28 tghtao 2020-9-27 11:58
posted by wap, platform: Samsung
看的一愣一愣,玩模拟器门槛这么高了

===================
#29 micjil 2020-9-27 14:16
原帖由 threek 于 2020-9-20 01:30 发表
posted by wap, platform: iPhone
Saturn转接器制作成功了,不过他的程序里面把拳和脚弄反了,我学要改一下代码。


交换按键只需要调整下比特位顺序就行,原始的代码118-135(加了按钮的备注)
if (line == 1) {
return ~(0x40 |
((pad & 0x0800) >> 4) | // S
((pad & 0x0010) << 1) | // up
((pad & 0x0020) >> 1) | // down
((pad & 0x0040) >> 3) | // left
((pad & 0x0080) >> 5) | // right
((pad & 0x0400) >> 9) | // A
((pad & 0x0100) >> 8)); // B
} else {
return ~(0x03 |
((pad & 0x0200) >> 2) | // C
((pad & 0x4000) >> 8) | // X
((pad & 0x2000) >> 8) | // Y
((pad & 0x1000) >> 8) | // Z
((pad & 0x0008) >> 0) | // L
((pad & 0x8000) >> 13)); // R
}
修改成
if (line == 1) {
return ~(0x40 |
((pad & 0x0800) >> 4) | // S
((pad & 0x0010) << 1) | // up
((pad & 0x0020) >> 1) | // down
((pad & 0x0040) >> 3) | // left
((pad & 0x0080) >> 5) | // right
((pad & 0x4000) >> 13) | // X
((pad & 0x2000) >> 13)); // Y
} else {
return ~(0x03 |
((pad & 0x1000) >> 5) | // Z
((pad & 0x0400) >> 4) | // A
((pad & 0x0100) >> 3) | // B
((pad & 0x0200) >> 5) | // C
((pad & 0x0008) >> 0) | // L
((pad & 0x8000) >> 13)); // R
}

===================
#30 threek 2020-9-27 14:38
posted by wap, platform: iPhone
原帖由 @micjil 于 2020-9-27 14:16 发表
交换按键只需要调整下比特位顺序就行,原始的代码118135(加了按钮的备注)
if (line == 1) {
return ~(0x40 |
((pad & 0x0800) &gt;&gt; 4) | // S
((pad & 0x0010) &lt;&lt; 1) | // up
((pad & 0x0020) &gt;&gt; 1) | // down
((pad & 0x0040) &gt;&gt; 3) | // left
((pad & 0x0080) &gt;&gt; 5) | // right
((pad & 0x0400) &gt;&gt; 9) | // A
((pad & 0x0100) &gt;&gt; 8)); // B
} else {
return ~(0x03 |
((pad & 0x0200) &gt;&gt; 2) | // C
((pad & 0x4000) &gt;&gt; 8) | // X
((pad & 0x2000) &gt;&gt; 8) | // Y
((pad & 0x1000) &gt;&gt; 8) | // Z
((pad & 0x0008) &gt;&gt; 0) | // L
((pad & 0x8000) &gt;&gt; 13)); // R
}
修改成
if (line == 1) {
return ~(0x40 |
((pad & 0x0800) &gt;&gt; 4) | // S
((pad & 0x0010) &lt;&lt; 1) | // up
((pad & 0x0020) &gt;&gt; 1) | // down
((pad & 0x0040) &gt;&gt; 3) | // left
((pad & 0x0080) &gt;&gt; 5) | // right
((pad & 0x4000) &gt;&gt; 13) | // X
((pad & 0x2000) &gt;&gt; 13)); // Y
} else {
return ~(0x03 |
((pad & 0x1000) &gt;&gt; 5) | // Z
((pad & 0x0400) &gt;&gt; 4) | // A
((pad & 0x0100) &gt;&gt; 3) | // B
((pad & 0x0200) &gt;&gt; 5) | // C
((pad & 0x0008) &gt;&gt; 0) | // L
((pad & 0x8000) &gt;&gt; 13)); // R
}
感谢!我代码都看晕了。

===================
#31 threek 2020-9-27 22:48
posted by wap, platform: iPhone
USB手柄转DB15手柄转接器也实验成功了。接下来做ps ss手柄转接DB15的项目,根据项目图纸bom淘宝上定做了pcb和零件,ATmega328au的test socket等工具,准备尝试下。

===================
#32 threek 2020-10-12 14:46
posted by wap, platform: iPhone
Ps ss转DB15的项目也制作成功了。

===================


[登录后才可回复]