You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+74-9Lines changed: 74 additions & 9 deletions
Original file line number
Diff line number
Diff line change
@@ -7,9 +7,7 @@ The Gravis Phoenix is a 4-axis programmable Joystick with 24 buttons. Up to 4 bu
7
7
8
8
It's no longer practical to use this joystick with modern computers due to the lack of a joystick port. Even USB joystick adapters do not make it possible to use the DOS boot disk configuration utility in order to reprogram the buttons.
9
9
10
-
This project will investigate removing the main logic board of the phoenix and replacing it with an Arduino which will also act as a USB input device. The [UnoJoy](https://github.com/AlanChatham/UnoJoy) project includes both Arduino code and host drivers in order to send axes positions and button states to a computer.
11
-
12
-
The initial focus will be on understanding the Phoenix's circuitry in order to make the proper connections and readings with the Arduino. To do this, I disassembled the joystick in order to investigate its components.
10
+
This project will investigate removing the main logic board of the phoenix and replacing it with an Arduino which will also act as a USB input device. The initial focus will be on understanding the Phoenix's circuitry in order to make the proper connections and readings with the Arduino. To do this, I disassembled the joystick in order to investigate its components.
* adc: 0-1023 reading from the Analog to Digital Converter
61
-
* res: resistance computed using Ohm's law from the ADC reading and the reference resistance. In the image above, note the reference resistors to the left of the Arduino near the analog input pins.
62
-
* out: resistance mapped linearly to a specified output range, currently set to 0-127 for each potentiometer
63
-
* clmp: the output value clamped to the output range, to ensure it is within spec
64
-
65
-
Each time one of the buttons' state changes, the test program dumps the button state. Below is sample output when the trigger and one of the wing buttons are pressed.
59
+
* res: resistance computed using Ohm's law from the ADC reading and the
60
+
reference resistance. In the image above, note the reference resistors to the
61
+
left of the Arduino near the analog input pins.
62
+
* out: resistance mapped linearly to a specified output range, currently set to
63
+
0-127 for each potentiometer
64
+
* clmp: the output value clamped to the output range, to ensure it is within
65
+
spec
66
+
67
+
Each time one of the buttons' state changes, the test program dumps the button
68
+
state. Below is sample output when the trigger and one of the wing buttons are
69
+
pressed.
66
70
```
67
71
group 01234567
68
72
handle .....0..
69
73
wing .......0
70
74
thrttl ........
71
75
```
72
76
73
-
## Testing UnoJoy
77
+
## Arduino Micro with Native HID Support
78
+
79
+
The [Arduino Micro](https://store.arduino.cc/usa/arduino-micro) is based on the
80
+
ATmega32U4 which has integrated USB support. Many other Arduinos rely on an
81
+
external chip for USB communication, which requires flashing software onto both
82
+
chips and communicating between them in order to implement a USB device such as
83
+
a joystick. However, the Arduino Micro is able to use the built-in
84
+
[HID](https://www.arduino.cc/en/Reference/HID) library in order to add a
85
+
descriptor for your USB HID device and report events. The
0 commit comments