Jump to content

Photo

Atati 2600 Paddles with an Arduino board...


1 reply to this topic

#1 Robofruit OFFLINE  

Robofruit

    Combat Commando

  • 4 posts

Posted Wed Jan 3, 2018 11:33 AM

Hi,

 

I recently got my hands on a set of paddles and I am attempting to connect then to an arduino board. I have a Pro Micro which can run the library created by MHeironimus here : https://github.com/MHeironimus/ArduinoJoystickLibrary

 

So now I have my paddles I am up a creek. I have the libraries I need to connect them to my Pro Micro Arduino board but there is part of the sketch code that mentions how to give 5v to the pots inside the paddles. It mentions also adding 1M ohm resistors (I have these), but I can't fathom where I connect them.

Please see below exert from the code supplied by Nondeclume at https://github.com/nomdeclume/AtariJoysticksPlus .If someone understands how these paddles function natively in the the Atari wild then I reckon they will be able to explain where I should put them (clean answers only please)...

<Code Exert Begin >
Paddle potentiometer is rated as 1M Ohm, linear. One end is connected to the
+5V power supply (pin 7). Full right is 0 Ohm. Full left should nominally be
1 Mega-Ohm, but I have measured 760K Ohm on one paddle and 900K Ohm
on another.

To get both the paddles and fire button B working (pin 9 shorted to ground/pins 5 and 9 shorted), we use the following schematic:
+5V --- R1A --- joystick pin 9 --- |--- R2A --- GND
(paddle A) |
|--- R3 --- S1 = +5V/not connected (pin joyFuncPins[?][fireB_pullup] on Arduino)
|
analog tap A (pin joyFuncPins[?][paddleA_pot] on Arduino)
+5V --- R1B --- joystick pin 5 --- |--- R2B --- GND
(paddle B) |
analog tap B (pin joyFuncPins[?][paddleB_pot] on Arduino)


<End>

Can anyone decipher what this means? Does it want me to connect the resistor in between the 5v line and the Pin 7 of the 9 pin DSUB ? If so where do the other two resistors go? I am confused.

Thanks in advance peeps,

Robofruit.

 



#2 Stephen Moss OFFLINE  

Stephen Moss

    Stargunner

  • 1,006 posts
  • Location:Cambridge, United Kingdom

Posted Thu Jan 4, 2018 5:42 AM

I have not looked the code to see how it links into the explanation provided in your post however that explanation does not make any sense to me as it appears to be saying you should connect pins 5 & 9 to ground. If you look at this circuit pins 5 & 9 are the paddle outputs, consequently by connecting them to ground you will just be dropping the 5V supply across the resistor and have no measureable output.

 

What exactly are you trying to do, are you trying to emulate the 2600 paddles or just use that as an analogue controller?

 

If you are trying to emulate the 2600 paddles then from this schematic I would guess that the TIA outputs a 0V (Low) to discharge the 68nF capacitor and then switches the pin to an input that times how long the capacitor takes to charge to a fixed threshold voltage and uses that time value as the analogue position value. Thus if you are trying to use the paddles as the 2600 does personally I would connect +5V to pin 7, OV to Pin 8 and wire both the 1800 ohm resistor and 68nF capacitor to the I/O pin of your Arduino and pins 5 & 9 of the controller as per the original 2600 circuit.

Use an Arduino I/O pin with a Schmitt trigger input (gives you your fixed voltage threshold, but not necessarily the same value as the 2600) that can also be used and an interrupt on High (or change) source then in software set the pin to an output & digitalWrite Low to discharge the cap.

Then write the current millis (or micros) value provided by the Timer include to a variable, set the pin as a digital input with interrupt on High (or change) enabled, then when the capacitor voltage charges to a high enough voltage you code will jump to the interrupt handler. Inside the handler you subtract the current millis (or micros) value from the saved value which gives your equivalent analogue position value as the time it take for the capacitor to charge to the correct voltage will vary on the controller position (and thus resistance)

 

If you just want to use them as a straight analogue controller where the position can be read using any ADC present on the Ardunio and thus use the ADC value to represent your analogue position then you will need to modify the controller by connecting the free ends of the paddle pots to 0V, if you intend on still being able to use them on a 2600 I would suggest you wire them via a Single Pole Double Throw (SPDT) switch on each controller so you can switch them between Arduino (0V) and 2600 (free) mode.

Then in your Arduino code every time you want to ascertain the analogue position you just perform an analogRead of the relevant I/O pin.

 

Which ever method you are using you will need pull up resistors on pins 3 & 4 so the voltage is pulled Low (0V) when the fire buttons are pressed, you can either wire external 5K1 resistors to +5V or enable the internal pull up resistors (if available) on the relevant Arduino I/O pins.

 

I am not sure it that helps much in regard to understanding the original method and code you wanted to use but hopefully it will help you understand how to use them in general and write your own code as at least you will know how it works if you code it yourself.

 

I cannot help you further with the Arduino code as in my experience and professional opinion they are horrid pile of amateur hour junk and if I never have to code another one again I will be a very happy person.

You should be aware that if you have code that appears that it should be working but is not that may be because the wonderful folks at Arduino have decide not to permit you to do what you want on that specific pin, a fact that is not immediately obvious until you start digging into their files to find why code that should clearly work does not!

 






0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users