Introduction: Programmable Indy Rock Pins

About: I am a PhD student at the UC Berkeley School of Information researching new ways to interact with digital fabrication machines and technologies. I studied computer science and art and I like to hack things tog…

Remember when punk rockers and indy kids would attach pins from their favorite bands all over their hoodies, backpacks and what not? This wearables project looked to take those buttons to the next level, allowing each pin to serve as a digital input button.

Here's what you'll need to complete this Instructable:
bottle caps
copper foil
mesh (to separate layers of copper foil - cutting fish net stockings worked great for me)
solder & soldering iron
3 resistors, each one with a very different value of resistance
3 10K ohm resistors
metal snaps (6 snap pairs)
handy things like pencils, scissors and tape.
microcontroller (I used Arudino Uno)

hoodie (or something you want to attached the pins to)
3 wearable LEDs

Step 1: How Each Band Button Becomes a Unique Identifier

Lets say you want to make each button to trigger a song to play, then the Arduino needs some way to know what button was attached and then pressed. Rather than using RFID I "hacked" a solution that uses different resistors in a resistive voltage divider.

A resistive voltage divider allows you to make a correspondence between a resistor and the value coming into an analog input port on an Arduino. If you make R1 much bigger than 10K Ohms then you'll get a very low value into the analog part. If you make R1 much smaller than 10K Ohms you'll get a high value into the analog port.

This means we can use a bunch of resistors that all have different values and associate each one with a button. When a button in connected into a voltage divider, the reading from the analog in port will allow us to determine which button what pushed.

So how do we convert this handy circuit into buttons? on...

Step 2: Using Band Buttons in Voltage Dividing Circuits

To use each button as a unique identifier, I embed part of the circuit in the button and the other part of the circuit in whatever you're attaching the buttons to (I used a sweatshirt). This allows you to make the buttons interchangeable!

But, if we implemented the buttons like the schematic shown here, then anytime the button is attached, the circuit sends a voltage value to the analog port. If you want the act of connecting the buttons into the circuit to trigger some action than this works great! If you want to have lots of band buttons on your sweatshirt and then you want to push the band button that you want to play at a given point then you need to make your band button into the kind of button you can press to trigger a signal....

Step 3: How to Make Band Buttons Into Push Buttons

To make these band buttons into push buttons we just need to add a switch into the circuit so when someone is pressing the button, the switch is closed, completing the circuit and sending voltage to analog in. When someone isn't pressing the button than the switch is open, the circuit is not closed and no voltage (0V) is sent to analog in.

Lets start making stuff!

Step 4: Acutally Make a Button

Get out your copper tape, card board, mesh, a pencil, a bottle cap and some scissors. Place the bottle cap on the copper foil and trace around it with the pencil. Cut along your pencil line so that you have a piece of copper that fits nicely inside the bottle cap. Repeat this process with the another piece of copper foil, mesh and cardboard. Place those to the side.

Get our your soldering iron and heat that sucker up!

Grab two snap pairs and break them apart into their component innie and outie snaps. Grab the 2 innie snaps and place the outies aside for now.

Grab one of the innie snaps and solder a resistor (of any value) to it. You may want to cut the wire so that the resistor is fairly close to the snap, there is not much room in the buttons so its best to keep things compact. Take the end of the resistor that is not soldered to the snap and solder it to one of the pieces of copper foil that you cut.

Grab the other innie snap and solder it to a piece of wire. Grab the side of the wire that's not attached to the snap and solder it to the other piece of copper foil that you cut out.

Layer the pieces as shown in the figure. I'd start by taking the two pieces of copper foil and placing the mesh in between. This is your switch! Pressing the button will compress the layers and cause the layers of copper to touch, closing the circuit. When the button isn't pressed, the mesh between the layers of copper wire will ensure that they are separated and that the circuit remains open (I've also seen this done with layers of aluminum foil separated by straws if you don't have copper foil and mesh on hand. Also, I would imagine that conductive tape would work just as well as copper foil).

Complete the button by sandwiching your switch between the bottle cap and the cardboard. Using a glue gun or tape, you can attach the snaps to the underside of the cardboard, Write down how far your snaps are from each other - you'll need that in the next step!

If you had some artwork that you wanted to place on top of the button, go ahead and add that.

Step 5: Make the Thing You're Attaching the Buttons To!

Grab your two outie snaps, your soldering iron and four pieces of wire.

Solder (or sew with conductive thread if using fabric) one wire to an outie snap and then poke the wire or thread through your material so all that you see is the snap on top of the material and the wire underneath. Solder or sew another wire to another snap and when you attach it to the material, make sure that it is the same distance as the distance between the snaps on the buttons. You wrote this down in the last step, remember? This will make sure that your snaps line up.

If you want an LED to light up when you push the button, then you can attach an LED with one end going to ground and the other to a digital output pin on your Arduino or other microcontroller.

Pick one of the snaps and grab the wire that is attached to it. Solder a 10K ohm resistor to the end of that wire. The end of the resistor that is not attached will then go to ground. If you have multiple wires going to ground, you can use whatever means you would like to combine then into a single wire, I soldered two wires together - whatever works, right? Take the wire that connects the snap to the resistor and solder a branching wire off from a spot between the snap and the resistor. This is your voltage divider so it's really important that the electricity flowing from the snap hits the branching wire that will eventually go to analog in before it goes through the resistor to ground.

Step 6: Connect to Arduino and Play Around With Possibilities

Use the diagram above to connect the four wires coming our of your circuit to the Arduino.

You can repeat steps 4 and 5 if you want to create multiple places to put a button.

In my project, I made a sweatshirt that had places for three buttons. I called it a wearable mix tape. A pair of headphones were sewn into the hood and when a user pushed a button, that song would play in the headphones when they flipped the hood up. They could program a playlist by selecting buttons in a particular order. I used Ardunio and Processing to play music files based on inputs from the circuit. I used photosensors placed along the inside of the sweatshirt, along the zipper to detect when the zipper was open or closed and adjusted the playback volume according to the zipper position. Using photocells to detect zipper position was a bit of a hack and there are much more elegant ways to do this. I also used a photosensor at the back of the neck to detect when the hood was open or closed. When the hood was up and a button was selected, an LED on the users back would turn on to indicate to others that he or she would likely not hear you!