DEUTSCHE VERSION |
|
Links | | | Forums | | | Comments | | | Report news |
Chat | | | Polls | | | Newsticker | | | Archive |
[Login] [Register] [Forgot your password?] |
| ||||
09.Mar.2019 |
Construction manual: Connecting Amiga joysticks via USB to the PC Using an Arduino board of the type Pro Micro the Dutch Amiga fan Martijn has constructed an adapter for connecting two Atari/Commodore joysticks to current computers via USB. His solution emulates an USB joystick and therefore should work without any additional driver. Since the microcontroller board already is equipped with an USB port and sufficient digital input and output ports, soldering operations are restricted to connecting some ports on the controller with the joystick ports. The hobbyist also provides a control program which is compiled by the Arduino IDE and then transferred to the adapter. The first picture shows his adapter in action: Martijn has used an old 25-pin Sub-D connector for hosting his adapter - the middle pins were removed for they are not required. In this way the complete switch could be hosted in the connector but you can also use two 9-pin Sub-D connectors: On the next picture you can see the internal wiring. If you are going to recreate the adapter then youu have to connect the required pins on the joystick port to any digital input/output ports on the Arduino. Finally there is the control program written by Martijn which interprets the joystick movements and sends corresponding joystick results via USB to the computer. It is important that the query of the digital input ports - "digitalread(n)", "n" standing for the number of the queried port - corresponds with the wiring. Maybe the queries in the control program have to be adapted. The program is transferred via Arduino IDE to the microcontroller board. For compiling it the Arduino Joystick Library is required. #include <Joystick2.h> void setup() { for (int i = 5; i<=9; i++) { pinMode(i, INPUT_PULLUP); } pinMode(10, INPUT_PULLUP); pinMode(16, INPUT_PULLUP); pinMode(14, INPUT_PULLUP); pinMode(15, INPUT_PULLUP); pinMode(18, INPUT_PULLUP); Joystick[0].begin(true); Joystick[1].begin(true); } void loop() { // joystick 1 as HID joystick if (digitalRead(6) == 0) { // up Joystick[0].setYAxis(-127); } else if (digitalRead(7) == 0) { // down Joystick[0].setYAxis(127); } else { Joystick[0].setYAxis(0); } if (digitalRead(8) == 0) { // left Joystick[0].setXAxis(-127); } else if (digitalRead(9) == 0) { // right Joystick[0].setXAxis(127); } else { Joystick[0].setXAxis(0); } if (digitalRead(5) == 0) { Joystick[0].pressButton(0); } else { Joystick[0].releaseButton(0); } // joystick 2 as HID joystick if (digitalRead(14) == 0) { // up Joystick[1].setYAxis(-127); } else if (digitalRead(16) == 0) { // down Joystick[1].setYAxis(127); } else { Joystick[1].setYAxis(0); } if (digitalRead(15) == 0) { // left Joystick[1].setXAxis(-127); } else if (digitalRead(18) == 0) { // right Joystick[1].setXAxis(127); } else { Joystick[1].setXAxis(0); } if (digitalRead(10) == 0) { Joystick[1].pressButton(0); } else { Joystick[1].releaseButton(0); } }(cg) (Translation: dr) [News message: 09. Mar. 2019, 02:03] [Comments: 0] [Send via e-mail] [Print version] [ASCII version] | |||
|
Masthead |
Privacy policy |
Netiquette |
Advertising |
Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved. |