According to the link above, I used those pins to get some readings with Multimeter. I got about 50 kohm while it is in its normal position. I moved the joystick, but it didn't change its resistance value.

According to the link above, I used those pins to get some readings with Multimeter.

You didn't read that article very carefully, did you? From the article (emphasis mine):

Quote

High-end game port joysticks such as the Microsoft SideWinder rely on multiplexing a proprietary data stream through the 4 standard button inputs and sometimes through the "unused" pins, achieving full support for a rather high number of buttons (e.g. 16 or 20) while special features such as daisy-chaining multiple joysticks, force feedback or joystick programming become possible in some cases.

In other words, it is highly doubtful that this joystick is operating as a simple PC-style joystick using the standard analog interface of the game port, which is what you seem to be attempting to interface with. Hopefully, you haven't damaged the joystick (test with a PC that has a gameport, first).

How or whether you could interface this joystick via the standard pins is kinda "up-in-the-air"; likely, the joystick is sending some kind of stream of data via some hardware (connections on the game port) and software (how it is communicating the data from the joystick axes and buttons) protocol. You will either need to find a description of this protocol or figure it out yourself; regardless of that, though, you need to find out what the "hardware" protocol of this joystick is; that is - what pins are connected for what purpose for -this- joystick (as other "digital" and "expanded" joysticks and peripherals that connected to the game port might have and most likely did use a completely different set of protocols).

Whether or not this information is easily available for this joystick, I don't know - but I suspect it very well might be. I would suggest a ton more research before attempting to use it (you might also consider in your first experiments, once you know the proper hardware protocol, to use the Arduino as a form of "logic analyzer" to record data coming from the joystick pins, so as to have a sample of the data to compare to any software protocol description you may find).

I will not respond to Arduino help PM's from random forum users; if you have such a question, start a new topic thread.

On the second link, I found this informationDigital mode of MS SideWinder joysticks ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SideWinders send data through buttons. The transmission starts on a normal measure trigger (out to port 0x201). Button 0 is used as clock (100 kHz), other three buttons carry data. Data is valid at clock 0->1 transition, LSB is transmitted first.

SideWinder 3D Pro packet ~~~~~~~~~~~~~~~~~~~~~~~~ The SW 3DP sends three packets, each 22 triplets long (64 + 2 bits). The packets have all the same contents. The packet layout seems to originate from the Mac version of SW3DP. Transmit speed is 300 kbit/sec, first packet takes 320 us to transmit, all three take 760 us.

pekkaa

You cannot use these modules as they are. They depend on the Linux kernel header files and APIs and the way they access the hardware is different. It may be feasible to port some parts of joy-sidewinder.c to the Arduino. Or at least you can use is as a template or reference for your own implementation.

I think you have everything you need to get started; what you'll want to do figure out which pins of the game port correspond to the "button pins", and there is probably power and ground needed. One of those pins is for the clock, as the info you found suggested, and the other three for data. You'll want to look thru the source code you found to see if you can find the "triplet decoder" functionality - or, you can try writing your own up, based on the information you already have. You'll probably want to use direct port access along with a pin-change interrupt on the arduino to detect the falling edge of the clock pin, then read the other three pins at the same time, then stuffing all of this into a small 66 bit buffer...

I will not respond to Arduino help PM's from random forum users; if you have such a question, start a new topic thread.