We have a lot of unspent BadAss tokens in Borderlands 2. To spend each token, we have to press the "A" button twice - once to select the token and again to allocate the token to a particular buff. SPAMming the "A" button for several hours is boring and fatigueing. A method of pressing the button repeatedly and rapidly for an extended period of time was desired.

We have a similar problem in many other games. For us, this is not a one-time occurence.

There are two videos included with this instructable. A video demonstrating the assembly of the ciruit and a video demonstrating the intended use.

There are more ways to achieve our goal than just this method. Alternative methods will show up as future instructables. I just have some video editing and text drafting to do, first. So, for now, enjoy!

Step 1: Safety Concerns.

Tools can hurt you. Altering the intended operation of a manufactured device almost always voids your warranty. This voids your warranty. Don't eat batterys because they have no nutrition. You are responsible for anything that happens, if you proceed to make one of these.

Step 2: You May Need ... So Lookie Here and Go Get You Some.

Some of the following items are left for you to determine the appropriate manner of use. It is assumed you understand how to power your game controller and other mundane requirements necessitated by our modification.

XBox 360 Controller with Batteries or Change and Play cable
Texas Instruments MSP430 LaunchPad or other microcontroller
M430G2553 for the LaunchPad or other microcontroller as appropriate
Breadboard Jumper Wires
2.2k Ohm Resistor
Breadboard Power Supply (Dual Rail 3.3v and 5v DC)
Battery Pack or Wall Wart or Other Power Supply (12v DC)
DC Jack
Plumbers' Tape
Alligator Clips (3)
Small Regular Head Screw Driver
Duct Tape
Rubber Band or Elastic
Blue Painters' Tape
1N4007 Diode
Tacky Glue
Popsicle Stick
A Television
An XBox 360
.32 caliber firearm
Video of how to assemble the circuit
A Few Minutes Of You Life That You Don't Have Anything Better To Do With

Step 3: Video Instructions for Assembling the Circuit.

Step 4: The Sketch.

// Xbox 360 Controller button pressing solenoid using a microprocessor, a transistor, and a relay
// by Vic Velcro <vicstricks.com>

int sol = P2_5;                          // the pin used for the solenoid control signal
int led = P1_6;                          // the green led on the launchpad

void setup()
pinMode (sol, OUTPUT);       // attaches the solenoid signal pin to the solenoid signal object
pinMode (led, OUTPUT);

void loop()
digitalWrite (sol, HIGH);         // sets the solenoid high - pushes the button on the XBox 360 controller
digitalWrite (led, HIGH);         // illuminates the launchpad led so we can see something happening
delay(20);                                  // waits for the solenoid to get there - too short means not full stroke
digitalWrite (sol, LOW);          // sets the solenoid low - releases the button on the XBox 360 controller
digitalWrite (led, LOW);          // extinguishes the launchpad led so we know nothing is happening
delay(60);                                 // waits a while before restarting the loop - too soon means you hacked

Step 5: The Solenoid and Bracket.

Cut a length of elastic or rubber band long enough to fit over the tail of the solenoid and half way down each side.

Drape the elastic over the tail end of the solenoid.

Cut a piece of blue painters' tape sufficient to go around the circumference of the solenoid.

Wrap the tape over the elastic and completely around the solenoid.

The idea is for the elastic to slingshot the plunger back into position after each rebound.

Cut a length of plumbers' tape sufficient to reach around the game controller.

Hang the strip on a tree.

Shoot the tape with the .32 firearm, aiming where you want to screw in the solenoid. This caliber is the perfect size.

Screw the solenoid, plunger forward, into the new hole of your plumbers' tape and tighten the nut.

Duct tape the two ends to the game controller with the solenoid plunger facing the game controller button.

Bend the strip so that the tip of the solenoid plunger just touches the game controller button.

Line the plunger up with the center of the game controlller button on the 'x' axis.

Do the same on the 'y' axis.

Use more duct tape to secure the right edge of the plumbers' to the right edge of the game controller.

Clip a piece of popsicle stick somewhat smaller than the diameter of the game controller button.

Glue the small piece of stick to the game controller button, between the solendoid plunger and the button.

Let the glue dry while you make any minor adjustments to the position of the bracket.

You want the stick to prevent the solenoid from wearing a hole in your button.

Step 6: Here It Is.

The circuit in the upper left corner of the video is the first prototype. It is not the exact circuit described earlier in this instructable.

I need one of these, dang
There are several ways to do this. The solenoid demonstration was an exercise is 'quick and dirty'. A timer circuit can be used to pulse the electronics inside the controller, instead of button-mashing with coils. <br> <br>I'm in the process (9 months in my spare time, a few minutes here and there) of making a complete 'breakout' direct from the circuit board of an XBox 360 wireless controller into a microcontroller. If you want to automate yours farther than just one button, that would be the direction to go.
Can you tell where you got your solenoid and what are it's specs?
I got my solenoid via mail order through Jameco. http://www.jameco.com/webapp/wcs/stores/servlet/Product_10001_10001_1919203_-1 <br> <br>The specs: <br>12VDC Stroke Push Solenoid <br> <br>Features: <br>Coil Resistance: 45Ω <br>Power Consumption: 7.3W <br>Stroke: 0.125 inches <br>Size: 1.0&quot; length x 0.5&quot; diameter <br>Shaft Diameter: 0.060&quot; <br>Weight: 0.1 lbs.
Just a thought but if you solder a capacitor across the solinoid and ten use the soilinoids pin as a switch to that it forms a buzzer. The speed would be limited down by the capacitor. If you want it to be adjustable just add a variable resistor. To the power supply. And so you could do away with the micro controller. (:
Indeed. Another method could be to use a 555 timer, instead of the microcontroller.
That would be a nice way to do this (: <br>555's are so useful at times. you could forgo the solenoid and fit one inside the controller with an extra switch for rapid fire and a set of rotary variable resistors to select the speed and pulse width. That would make for a nice neat build.
or just use a 555 and a transistor to accomplish the same thing inside the controller, like every turbo controller ever made
Maybe add an ldr and a colour filter to the screen with a blob of bluetac to decide when to stop pressing. Then you wouldn't have to stand and wait either (:
I had not thought of that. I have been thinking of other ways to do the same thing, but I like your suggestion. <br> <br>Thanks for the input.
Thanks (: <br>Any time (:
its also possible to accomplish this using an npn switching tansistor and a timer, but space is limited in the controller and is very tricky to do so. great share!
Thanks. Glad you liked it. <br> <br>I'll have a couple more variations of this up in the future. Right now, I'm working on some custom conductive materials and trying to correct the variations in the autofocus of my video camera... <br> <br>After spending our points using the quick and dirty solenoid version (we were in a hurry to spend those points and decided to redneck it for this go-round), I whipped together a few solid-state methods of spending points in the future (which is certain to happen with other games).
that is awesome haha <br>

About This Instructable




Bio: Semi-Retired Professional Adventurer. I am a nosey person. I Don't infringe on personal privacy, but I like more answers and less questions. If I ... More »
More by vicvelcro:Raspberry Pi and ZenMINER Heatsink and Fan Acoustic-Electric Wooden StompBox with Piezo PickUp LCD Thermo-Meter Project using TI MSP-EXP430FR5739 FraunchPad 
Add instructable to: