Instructables
Picture of Custom Tron Disc Mod
Dual1.jpg
AnimatedV1Med.gif
Dual2.jpg
In this Instructable, I cover modding the store-bought Deluxe Identity Disc to an upgraded version with 64 leds, controlled by an AVR MCU. The upgraded version is costume-ready and would be an excellent addition to your Tron costume - it'll also look great on your desk/dresser/etc.

My 7 year old daughter watched Tron:Legacy with me on Father's day and decided instantly that she wanted to be Quorra for Halloween. I knew the costume would be a decent bit of work, and I don't sew (although I will be getting assistance making the costume - hopefully a forthcoming instructable) - I decided to start with the Identity Disc.
I managed to find an identity disc at Target for $9 on clearance (they can be found on Amazon for $12 as of the writing of this article). However, when we brought the disc home, I was seriously disappointed at the lack lighting. So - like any good father would do - I set out to upgrade the disc.

Please note that this project does not preserve the original sound - I'd really like to include something, but didn't find any AVR examples I really liked. If you have any suggestions for sound inclusion - please share!

Before I start the article - and before people say they can't do this themselves - let me be clear about my qualifications. I'm a Software Developer (.Net). I'm not an electrical engineer, my soldering skills are sub-par, and even though I'm a developer - my AVR code is probably horrible. If I can do it, anybody with a lot of patience and time can as well.

And take it easy on me - this is my first Instructable!

When I started my research - I ran across this article: Tron-Disc-with-NET-Microframework. Fantastic implementation - all LEDs can be controlled individually, adjustable brightness. Then I noticed the huge board in the middle. And the expensive cost of the hardware, etc. I needed something that wouldn't break the bank, and parts that I could fit in the disc.

But first - let me leave you with a little teaser video. This is what the device looks like with the V1 firmware.



Also - if you're interested in a look at the costume - here it is!
 
Remove these adsRemove these ads by Signing Up

Step 1: Materials & Tools

Picture of Materials & Tools
supplies2.jpg
GerberClutch.jpg
Materials:

• Tron Deluxe Identity Disc
• 3 x AAA alkaline batteries - any battery source between 4 and 5.5v would work, but you're limited on space
• 64 LEDs (I bought a set of 100 blue on Ebay for $3.50 including shipping)
• ATMega328/168 or ATTiny45- I was able to get free samples from Atmel - warning - they're much more difficult to obtain than Maxim
      Any AVR chip that supports SPI/USI and has an additional 2 input pins would probably work as well
• Max7221 or Max7219 LED Display Driver - I was able to get free samples from Maxim - they provide samples fairly freely
      I have not tested with the Max7219 - but from what I've seen online, these should be interchangeable
• 50+ feet of 30awg wire - seems like a lot - but you'll need it
• RSet Resistor - I needed a 15k resistor - this helps the LED Driver determine what current/voltage to use
      See this page for more information on values
• Solder (I suggest something small like 0.032)
• Perfboard - a small sheet is all you'll need.
      You'll want the kind with the copper rings. Veroboard would probably work as well, but it's more expensive
• 24 pin DIP IC Socket (Optional - used for the Max7221 - I don't trust myself to not fry the IC)
• 28 pin DIP IC Socket
• Two pens with springs
• Hot Glue Sticks
• cyanoacrylate
• Magnetic Reed Switch - I used the glass kind
      For the second disc, I used a COTO-20 I purchased from eBay. For the first disc, I harvested one from a broken child's toy

Tools:
Soldering Iron - I'm not using anything fancy - just an $8 iron from RadioShack
Soldering Helper - Not sure what it's really called, but it comes with the RS Iron - it's a thin tool that I used to help route wires, wrap wire, etc. It proved invaluable. This or a similar tool will come in handy.
Dremel, cut off disc and engraving tip (Optional, but highly suggested)
Wire cutters
Wire stripper (Optional - finger nails work very well on 30awg)
AVR Programmer - I use a $6 USBASP programmer I found on eBay
Silver Sharpie (Optional)
Hot Glue Gun
Pliers - ideally a small pair

Step 2: Gut it!

Picture of Gut it!
InsideTop.jpg
InsideBottomPlusParts.jpg
Switches.jpg
InsideTopEmpty.jpg
BEFORE YOU START - Get yourself a zip-top bag.  You'll probably want to save all of the original parts.  If you want to expand on my design, some of the extra pieces might come in handy.

OPEN IT UP
Dis-assembly is fairly simple.  Start with the six screws on the back and the battery compartment to open.  The rest of the process should go fairly quickly.  No prying should be necessary.  Remove the batteries as well.
(See Picture 1)

REMOVE THE ELECTRONICS
Take out all of the electronic components from inside the disc.  There is some masking tape you'll have to take off to get some parts out.
Use your wire cutters to disconnect the electronics from the Battery compartment.
(Pictures 2-5)

KNOW WHAT YOU'LL BE REMOVING
We'll be removing a lot of extra plastic to make room for our new components.  To avoid removing something you shouldn't, I suggest marking the posts you're keeping to avoid confusion. 
(See Picture 5)


Step 3: Prep the shell - Part 1

BATTERY COMPARTMENT
For this project, I wanted the AVR chip to be accessible in case I wanted to upgrade the code without taking the disc apart. We need to remove most of the battery compartment while leaving the edge so that the original cover will still fit nicely.
Start by removing the flat piece on top (See Picture 1). You'll notice the melted areas - these can be broken off fairly easily to expose the pieces we'll be removing. Make sure to save the metal clips from the compartment - we'll need those later. See Picture 2 for how the compartment looks like after the top piece and clips have been removed.
Once you've removed the clips - this is where the Dremel really comes in handy. You need to leave the screw post, the two holes where the tabs from the battery cover goes and enough of an edge for the cover to sit on (See Picture 3)

START CUTTING
There are two ways you can go about this. You can start with a cutting wheel or sander on your Dremel and get rid of all the extra fins, posts, etc. I prefer to cut as much as I can with my wire cutters and then use the Dremel to smooth everything out. Don't have a Dremel? It'll make it easier, but it doesn't have to be perfectly smooth. A hobby knife might work to get rid of the last bits as well.  Again, make sure not to cut off any of the posts that we need to save.
See picture 2 for what the disc looks like after cutting of the tabs, etc with a wire cutter.  You can smooth the roughness with the edge of a cutting disc.

Note - this step doesn't have to be perfect.  We're doing most of our work on the top half of the shell.  We're removing the tabs, etc from the bottom to provide extra clearance.

BLADE
This step is fairly simple.  Using a sharp knife or wire cutters, remove all tabs from the blade.  That's it!  See picture 4 for what the blade looks like.

Step 4: Prep the shell - Part 2

Picture of Prep the shell - Part 2
GLUE THE BLADE
We're gluing the blade to the top half of the Disc - this is the half with the clear C-ring.  Do not glue it to the bottom!
Because we've removed the guides and tabs that helped put the blade in place - I recommend putting the blade back in.  Once you've done that - make sure two halves can close fully.  Once you've checked to make sure you've inserted the blade correctly, remove the bottom half and run a bead of superglue around the inside of the blade where it meets the black plastic. We're mostly doing this so that it will stay in place while we're fitting in our electronics - don't go crazy with the glue.

MARKING THE DISC
In order to make the new disc as movie-accurate as possible, we're placing 16 leds in the inner ring (convenient since the LED chip we're using breaks leds into segments of 8).  The remaining 48 leds will go on the outer ring. 

I found that the inner ring is about 40cm and we need 15 breaks - leaving 2 2/3 cm between each LED.  I mostly eyeballed this section, but used a measuring tap used for clothing measurements to make things a little easier.

The outer ring is much simpler.  We need to separate it into 48 segments.  There are already 6 posts evenly spaced around the disc.  Using your sharpie, make a large mark at each of these posts (6 marks).  Then add a large mark in the middle of each post (12 marks).  Then make a smaller mark between each of the large marks (24 marks).  Then add a smaller mark between all of the marks (48 marks!). 

OPENINGS FOR THE INNER LEDS
On the inside of the inner ring, you'll need to make openings in the black plastic so that each LED can shine through.  I like to use an engraving tip on my dremel to make these openings.  A small sanding drum would probably work as well.
Using one of your LEDs, make sure you have a large enough opening so that the LED will shine through at each location.

Step 5: Battery Holders

SUPPLIES
This is actually my second disc, so I have come up with two different ways to hold the batteries - I'm sure there are others.
Because of the reduced amount of space we have within the disc, traditional battery holders just won't fit.  On my first disc - I happened to have a broken toy that took AAA batteries.  I removed the metal tabs from the battery compartment and used them for contacts.
When I started working on my second disc - I wasn't so lucky.  Also - because I'm writing an Instructable, I wanted something that would work for everyone.  I'll describe the second method, the method using the metal tabs is extremely similar.

Please note - any suitable battery source from 4v to 5.5v will work for the provided chips.  AA batteries proved too large, rechargeable batteries would require 4 to meet the 4v minimum, and small LiPo batteries were too expensive and required special chargers.  For more detail on what you could do with LiPo batteries - see the NetDuino implementation.

For this Instructable - we'll be using half of a pen spring for the negative end of the battery and one of the metal clips from the old battery compartment for the positive end.

PLACEMENT
Because of necessary placement of certain items - our batteries have to fall into specific locations.  The momentary switch is located at the top of the Disc.  The battery compartment is located at the bottom - this is where we'll be placing our MCU.  It is easiest to place our LED Driver as close to the MCU as possible.  Because of this - our batteries will be broken up a bit.  See Picture 1 for placement of the batteries.
The two batteries on the left half will be chained together with a larger connection looping around the top half of the disc to the battery on the right.  Leave the leads from the bottom left and upper right batteries long enough to reach the MCU/Max7221 area at the bottom of the disc - leave yourself some extra wire to avoid having to add extra later on.

PREPPING THE SPRINGS
Start by cutting two springs in half. Next, solder a wire to the cut end of the spring.  Once this has cooled a bit - coat 1/3 of the spring (starting at the solder joint) with a bead of hot glue.  This will help the spring stand above the disc a bit when we put it in place.

PREPPING THE CLIPS
When we gutted the disc in step 3, we saved the metal clips from the battery compartment.  Pick three clips that don't have any solder, or are as clean as possible.  Start by bending the small tab up - this is the surface the "+" end of the battery will touch.  We will be using the large for the wire connection.  I found it helpful to tin my wire, then place a blob of solder on the large tab and then solder together. 

ATTACH YOUR WIRES
Figure out how much wire you'll need between holders and solder them together - this will make the next steps easier.

MAKING THE HOLDERS
Now that you've identified where the battery holders will go and your clips and springs are ready - let's put them in.  You'll need your hot glue gun.
I like to start with the clip rather than the spring.  Place one of your AAA batteries in the provided area.  Hold the clip (with wire lead attached of course) and place against the "+" end of the battery. Once you've decided where the clip will go, move the battery and apply hot glue to the BACK of the clip.  Any glue that ends up at the front of the clip will need to be removed for a good connection.  Allow the tab to cool a bit before installing the spring.  To avoid any accidental shorts, place some hot glue on the edge of the tab facing the outside of the disc.

Now that the tab has cooled, put the battery back.  Compress the spring against the other end of the battery to get a good idea of placement.  You want the spring to be tight against the battery (although not too tight).  Glue the spring in place - making sure to not get any additional glue on the spring as this will prevent it from compressing.

Once the spring has cooled, verify that the battery is held securely.  I've found that it can be helpful to place additional hot glue around the outer edge of the battery to prevent it from slipping out.  Make sure you don't put too much in this area because you'll be placing your outer LEDs next to the clips.  You can always come back and shave off the extra later if needed.

Repeat for the remaining two holders.

NOTE - don't leave batteries in the holders until they've cooled for a while - it may push the connectors loose.

Step 6: Wiring the Inner Ring

DIFFUSE THE LED's
This step is optional - In my first disc I didn't diffuse the LED's - I'll show you the difference between the two at the end of the Instructable.
Sand the top of each LED flat.  This allows a less focused beam of light, but still in the direction it's pointing.  See picture 1 for a side-by-side comparison.  Do this for all 64 LED's you'll be using for the project.  I found that using a sanding disc with my Dremel worked great, but you can use a normal sheet of sandpaper for the process as well.

UPDATE: I found that diffusing the LED's didn't really do anything.  See the last step for side-by-side photos.  They did trim down the profile of the LED's - so that helped a bit.


GLUE THE LED's
Using the holes you drilled in the previous steps - arrange your 16 inner LED's with the leads all arranged in the same manner. It doesn't really matter what order, but it's helpful if they're all facing the same way. Using your Glue Gun - place a blob of glue in each hole and hold the LED in place (See Picture 1). 
If your LED's are placed in a location where one of the original LED's was placed, fill the existing opening with Hot Glue to diffuse the light.
After the glue has cooled - test each LED to make sure it shines through brightly.  Adjust where necessary. 

WIRE THE CATHODES
Since our LED driver is common cathode, we need to wire together the cathodes (-) of each set 8 LED's. In the case of my LED's, that's the short leg.  Using some of your wire and soldering iron, connect the left 8 LED's (this is Segment 0) and the right 8 LED's (this is Segment 1) using a daisy chain of wire.  Try to solder fairly close to the LED, but we have a lot of room in this section, so it's not critical.
At the bottom of the disc, connect one length of wire to the last LED of the left section and one to the first LED of the right section to connect to our MAX7221.
See Picture 2 for what this looks like.
Once you're done with your Cathodes - clip the leads short.  You won't need to wire them to anything else.


ANODES - DAISY CHAIN
In Tron:Legacy - the LED's on the disc light starting in the upper right and moving clockwise.  We'll number our LED's in this direction as well.  Since we're on the inside of the disc, the upper left LED will be LED 1, leading to LED8 at the bottom, then starting at 1 again on Segment 0.  I found it helpful to use my sharpie and label each LED with its number.
Inside of our disc, we'll be wiring the Anode(+) on all 1's to all the other 1's. 
See Picture 3 for what it looks like when you've added one chain, and Picture 4 for the nice mess of wires you'll see when you've completed. As you run your wires, try to tuck them under the LED's leads as neatly as possible.  Once you're done, if you find they move around too much, a dab of hot glue will keep them in place.  However - I'd suggest testing your LED's first to make sure everything is wired correctly.

TESTING
I ran into some situations where my LED's were wired incorrectly - nobody's perfect.  It's easier to find and correct at this stage than later.  Hook up an appropriate battery source (3v in my case), connect your two ground wires (Segment 0 and Segment 1) to the "-" on your battery.  One-by-one, connect the other end of your power supply to each Anode (+).  Touching the Anode on LED 1 in any Segment should light the LED 1 in the other segment.  If all LED's light appropriately, you're safe to continue on.

CUTTING YOUR ANODE LEADS
We'll eventually be connecting the inner LED's to the outer LED's, so for now, leave at least one LED of each number with a long Anode lead.  I chose the number closest to the bottom of the Disc, where we'll be placing our chips.

Step 7: Wiring the Outer Ring

CONSTRUCTING YOUR SEGMENTS
Our LED's will be very close inside the disc, so it's easiest to construct our segments of 8 LED's and then glue them into the disc.
For my first disc, I used some clamping heat syncs that came with my Soldering Iron.  For the second disc, I constructed a quick Jig out of a scrap of wood.  I've seen this method used in LED Cube Instructables. I actually found the former method easier - mostly because my Jig was a little off - making my segments just a bit too long. 

We'll be bending the negative lead of the LED's to form a bar that we'll be connecting with the other LED's.  Taking 8 LED's, bend 7 of the leads one direction, and the other in the opposite (See picture 2).  It's important to keep the bend as close to the LED as possible - so smaller pliers are helpful.

Once you have bent your leads, start with the single LED that's bent in the opposite direction from the others.  Place this at the end of the Jig next to one other LED (See picture 1).  Solder these two together.  Trim the extra lead.

One at a time - place the next LED into the Jig and solder to the neighboring LED.  When you have soldered all leads together, take the segment out of the Jig.  Solder a long (about a foot) wire to the newly soldered bar (See the black wire in picture 5).
Now, using your pliers, very slightly, bend the bar between each LED to make a slight curve.  This will help the segment fit into the Disc. Check the newly soldered segment against the marks you've made in the Disc.  It doesn't have to be perfect, but be careful about going over too much.  Make any adjustments to your spacing/jig if necessary.

Do this for the remaining LED's.  You should now have 6 segments soldered together (see picture 4).

WIRING YOUR FIRST SEGMENT
Cut 8 lengths of wire the size of 12 markings on your disc.  If you have multiple colors of wire - try to alternate.  Strip a small portion at each end.  Solder each to the end of one anode of your segment.  I used wrapping wire, so I found it helpful to first wrap the wire around the lead and then solder.  See picture 5.  Test your segment as we did with the Inner Ring. Clip the extra lead length - you won't need it past this point.

PLACING YOUR FIRST SEGMENT
As we did with the Inner Ring, we're going to wire the LED's counter-clockwise.  The left-most LED will go at 12:00 (your large mark at the top) and

Using your Hot Glue Gun, place a bead of hot glue on the left-most LED.  Place this LED in the 12:00 position and hold until cooled.  Make sure the LED is glued to the blue area and not the black plastic.  This helps anchor the Segment so that your LED's aren't moving around in the hot glue.  Glue in the remaining 7 LED's in and hold them in place until they cool.  You may find it helpful to glue a few at a time.  See picture 6 for the finished result.

PLACING THE REMAINING SEGMENTS
Using the wires you placed on the first segment, daisy chain them to the next segment (1 to 1, 2 to 2, etc).  Then, cut an additional 8 lengths of wire and attach them to your second segment - these wires will attach to your third segment.
Repeat the process for the remaining segments.

By now, your disc is probably starting to look like a mass of wires.  Carefully placing these wires underneath your LED's where possible will make your disc look a little cleaner.  I've often found it helpful to remove the batteries (if you had them in place) to allow tucking wires.  Once you're done and have tested everything, it's probably a good idea to come back and add a few dabs of hot glue to keep things in place.

CONNECTING THE INNER RING TO THE OUTER RING
At some point, you need to connect your Inner Ring to your Outer Ring. I found it best do this in the battery compartment area.  Remember those leads we left long in the inner ring?  Connect an extra run of wire from your segment to the inner ring.  Because of the connection from the neighboring Segments, you'll end up with 3 wires attached to each anode (+).

After you have connected the inner and outer rings, you can clip the long leads that we left on the inner ring.

ADDING EXTRA CONNECTIONS FOR THE MAX7221/7219
In the section that we've saved for the LED Display Driver, make sure there are extra connections available in this area.  As you did when connecting the Inner and Outer rings, you'll end up with 3 connections to each anode (+). 

TEST, TEST, TEST
If you have a multimeter (I don't) - you could use it to make sure every 1 connects to all other 1's, etc.  I used a 3v supply and tested to make sure each LED lit up.  It's a fairly simple process and will save you time - it's easier to test and fix now than it is down the road.  On my first disc - I managed to wire an LED in backwards and didn't notice until I had everything wired up.  Don't make that mistake!

Step 8: Programming the AVR

Picture of Programming the AVR
ENVIRONMENT
If you need information on programming AVR MCU's, I used AVRStudio for another AVR project I did, but I recently found an Instructable on using Eclipse as an IDE .  I like Eclipse much better, but it's all personal preference.

PROGRAMMING
There are plenty of Instructables about getting started with AVR programming.  I've included my Eclipse projects which include the C source files, as well as the precompiled .hex files. 

If you're using an ATMega328/168 - use the TronV1 files.  If you're using an Attiny45, use the TronTiny files.

Both implementations are running the chips at the full 8Mhz using the internal oscillator. Other than that, I'm using standard fuse bits - although you could add brownout detection as the MAX72XX chips stop working at 4v.

UNDERSTANDING THE PROGRAM
If you're not interested in modifying or understanding the code - you can skip this section :)
Communication to the Max7221/7219 consists of two bytes - one byte indicating what value (command register) we're updating (settings, values for a segment, etc).  The second byte contains the value to write. 

Each segment of 8 LED's are addressed through a series of bits (8 bits = 1 byte).  So, for instance - the following binary value will turn on only LED1 - 00000001.  The following value turn on LED 8 - 10000000. 

Commands are sent to the chip using the sdp8 function.  Register names and helper functions can be found in the LEDControl.h file. 

There are a few differences between the Tiny and Mega implementations.  ATTiny45 doesn't support SPI, so I found some code to use USI instead (AVRFreaks.net is a great source). There are some port and pin differences as well - understanding considering one is an 8 pin MUC, and the other has 28 pins.

You should be able to port this to a large number of AVR chips, provided you configure the timers and ports correctly.

Step 9: Wiring the AVR

Picture of Wiring the AVR
ATMega328.png
CUTTING THE PERFBOARD
We want to make our board as small as possible, so we need a board that gives us one row of holes to the left, one to the right. No need to have holes available above or below - we're dealing with a tight space here.

PIN ASSIGNMENTS
I couldn't get this into the Instructable in a nice way, so see Picture 3 for how the pins are assigned.  This list will be helpful in the next step as well.

WIRING
For now, connect your Ground (-) and Supply (V+) wires.  You may also want to add a good length of wire on the two pins that will be handling our button input.  When we wire the MAX72XX, we'll connect those three wires as well.
FYI - If you're like me, and not very good at soldering, I suggest leaving the chips out of the socket for now.

Step 10: Wiring the LED Display Driver

Picture of Wiring the LED Display Driver
WireResistor.jpg
GroundWired.jpg
MAXWiringBlurry.jpg
Attiny45.png
ATMega328.png
CUTTING THE PERFBOARD
We want to make our board as small as possible, so we need a board that gives us two rows of holes to the left, one to the right (I'll explain that later).  No need to have holes available above or below - we're dealing with a tight space here.

Again - If you're like me, and not very good at soldering, I suggest leaving the chips out of the socket for now.

WIRING THE RESISTOR AND V+
To tell the Max7221/7219 what the maximum current/voltage to provide, we have to wire a resistor between the V+ and ISET pins.  This resistor is referred to in the DataSheet (PDF Warning) as RSET. See this page for more information on values.
See Picture 2 for how I wired this.  See Picture 3 for how this looks from the top.
Leave a good length of wire on the V+ for now - we'll be connecting this shortly, but the extra length is helpful when we're testing before the power switch is wired.

DISC PLACEMENT/POSITION
See picture 4 for how the board for the MAX72XX will be positioned in the Disc.  Note that it's upside down.  Please note that I positioned my RSET resistor toward the outside of the disc - please don't do this - this made for a very tight fit.  Rotate the board so that the resistor is towards the inside of the disc.  If you're using a 1/2W resistor instead, you probably won't have such a problem.

GENERAL SUGGESTION ABOUT WIRING
Honestly - this is the first step in the process where the wiring gets a bit out of hand.  Just look at picture 4 - It's a mess!  Keeping your wires short, but not too short is key.  Any extra wire you have has to go somewhere.  If you cut them too short, you'll find that when you go to place the board when done, you can't move it enough. 
If you're leaving the chip out of the socket for now, make sure you'll have enough room to put it in when you're done.

WIRE GROUND PINS
Wire pins 9 and 4 to ground on your power supply - not to be confused with the grounds coming from your LED groups.

CONNECTING YOUR GROUND WIRES
The DIG pins correspond to the Segments we've created.  From the inside of the disc:  Segment 0 = left of Inner Ring.  Segment 1 = right of Inner Ring.  Segment 2 = top left.  Segment 3 = Middle Left.  Segment 4 = Bottom Left. Segment 5 = Bottom Right.  Segment 6 = Right Middle.  Segment 7 = Top Right. 

CONNECTING YOUR +/SEG WIRES
So I realized it's confusing that I used the wording "Segment" to identify the groups of 8 lights.  I'll try to go back later to reword, but for now - please see the notes on the first image for attaching LED's 1-8 to the various SEG pins.

CONNECTING TO THE AVR MCU
See the provided images for pin connections.  Since you're only connecting three wires between the two chips (with the exception of V+ and Gnd) - it should be fairly simple.

CHIP -> SOCKET
At this point, if you've left the chip out - put the MAX72XX chip into the socket.


Step 11: Testing/Troubleshooting

Picture of Testing/Troubleshooting

Assuming you've programmed your AVR MCU and followed the wiring diagram, at this point, you should be able to connect both chips to ground and V+ from your batteries (or external supply of 4-5.5v).  Ideally, the disc should immediately light up and go through the "blade" animations. 

TROUBLESHOOTING
If you run into problems once you supply power to your chips, the best thing to check is your wiring diagram.  DISCONNECT THE BATTERY - you don't want to fry anything. 

For those of you who are trying to port the code to another AVR, or are trying to do some troubleshooting - there are three lines of code commented out in initsdp8 of LEDControl.h.  These put the chip into test mode for 1 second - useful for checking your wiring. 
Also, there is an included led_test function that I coded as an initial test sequence - this lights up each LED sequentially.  If you've made some wiring mistakes - this may be helpful as well.  Simply add a call to this function after initsdp8 is called.

If anyone runs into trouble and I'm able to help - I'll post additional troubleshooting steps here as well.

Step 12: Wiring the switches

MomentaryParts.jpg
MomentaryScrew.jpg
MomentaryLarge.jpg
Now that you've tested your wiring and chips - it's time to start in on the switches. 

POWER SWITCH
We're using the existing power switch.  Only problem is - it's attached to the main circuit board. We need to cut it off in a way that leaves two screw holes - we'll using the original posts.  See Picture 1 and Picture 2 for more information.

See Picture 3 for where we're making our connections.  These worked best for me - it was easy to connect to an existing solder blob, but feel free to test and make your own connection.  If you use the same points as I did - be careful about bridging with any other pins - you could accidentally wire your switch "On" permanently.

Your power switch should be placed in between the "+" on your battery and the "V+" on your chips. 

Test your switch - if everything works well, hook it in permanently and screw it back into the cover.  Don't forget the little black topper piece that we saved when dismantling - it won't work well without it.

NOTE - the original disc had a "Demo" mode - our switch will work in demo and normal power mode.  The only off mode is in the middle.

MOMENTARY & REED SWITCH INFORMATION
The way I've programmed the switches (and from what I can tell is the standard way of using switches with AVR MCU's) is to detect when they're connected to ground.  When you wire each switch, connect from the MCU -> Switch -> GND. 

MOMENTARY SWITCH
We're wiring the original Momentary switch to preserve the original appearance and provide extra functionality.  When "docked" (explained in the next section) - this button does nothing.  When undocked, the button activates the "blade" animation.  If you're interested, I think I've made the code simple enough to expand on - you can add your own functionality to the button if desired.

See Picture 4 for the pieces you'll need to pull back out of the original parts. 
See Picture 5 for the parts in place.

One note - the piece that activates this switch is a bit tricky to get into place - since we're using the opposite side of the disc than originally designed, it can fall out.  I was able to get it to work without too much trouble, but it does fall out sometimes when I'm putting the Disc back together.

REED SWITCH
The intention of the Reed Switch is to detect when the disc is on the costume - or "docked".  I've also added some magnets to the stock stand that triggers the same condition. Ultimately, I plan to add some sort of metal (washers, etc) to the non-lit half of the disc to attach to Rare Earth magnets in the costume.  It'll be a little while before I get around to the costume, but I'll post updates once I get the switch working.

I bent the leads of my switch and put it into a small strip of perfboard I had laying around.  This is optional. 
I placed my reed switch next to the battery compartment so that a magnet on the included stand would activate it.  If you're just using this for a costume, you can place it anywhere.

Step 13: Put it back together

PERMANENT PLACEMENT
If you've tested everything and are satisfied, I suggest using some hot glue to hold things down.  The MAX72XX can be a problem - especially since it's very close to the power switch. 

CLOSING THE DISC
On both of my discs, I ended up some extra wire between both halves of disc - helpful if you don't want to yank things apart when opening the disc.  In both cases, I simply pull this through the battery opening and tuck back in place once the screws are secured.  This also provides easy access to the AVR MCU if you decide to change the firmware. 

When you do put the disc back together, don't worry if it's a tight fit.  On both of my discs, the fit was a bit tight, but it seals up nicely once the 6 screws are in place. 

I do not suggest doing this with the unit on - pressing on the batteries tends to cause them to disconnect momentarily and it won't do anything except worry/scare you at this point.  I did find that my batteries were very secure once the screws were in place, and pressing on the disc or shaking didn't cause any problems.  If you're planning on wearing this as a costume, I'd suggest testing as well - I'd hate to knock a battery loose during a party and have to find a screwdriver to fix it.

Check and make sure everything works right - test all switches, buttons, etc.  Hopefully everything works!

Here's another video of the updated firmware and some shots of the diffused/non-diffused discs side-by-side.


Step 14: Improvements

Picture of Improvements
DualDiscs.jpg
If I have additional time before Halloween, I may add some more functionality. But for now - I'm pretty happy with the results. I wanted to


Here are some areas where I think the project could improve or evolve

Code - this doesn't have to be a fast application, but the code could be more processor efficient, and - I'm guessing - more power efficient as well
Animation - Right now the animations are pretty basic - I'd like to do more with the external button, but haven't come up with ideas yet
Costume - I haven't tested attaching this to fabric yet. If anyone has any suggestions on using the magnets or any other alternatives, please leave a comment!
Batteries - Ultimately, I'd like to come up with some foam that I can put in place to keep the batteries from falling out, even if dropped.

Step 15: Costume Pictures

Picture of Costume Pictures
IMG_20111026_064459.jpg
DarkCostume.jpg

I wanted to post some pictures of my daughter's costume. I haven't finished the disc mount quite yet and there are some finishing touches left, but here are some preliminary pictures.
The costume was made using LED strips diffused with Batting.  Much more flexible than EL wire and more adapted to a child's costume in my opinion.
fisher_g1 year ago
This is a very informative instructable. Thank you for the details you provided. Physically putting this together will be relatively easy for me (thanks in large part to your instruction), the code is where i am falling flat on my face. I haven't looked at coding in nearly 10 years. I sort of understand portions of it, but not quite. I am interested in understanding your code line for line, but also in getting it installed onto my ATtiny45. Do i need to use your code files to do this or can it be done using only the hex file? I apologize in advance for the naive ness of the question but, this is my first venture into MCUs.
cubeberg (author)  fisher_g1 year ago
The MCU can be programmed with just the HEX - you shouldn't really need to do too much to get that set up. You'll need to set the fuses correctly as well (8mhz internal clock). There is also a great tutorial (I think I linked to it) on programming AVR using Eclipse.
If you run into trouble - let me know.
Thank you for your reply. I just finished compiling the code in Eclipse. Should the HEX that I generate be the same as the HEX that you generated? I was interested in seeing if I had do everything correctly, so i compared the two HEX files and they do not match. I am still waiting to receive my AVR Programmer. Will that effect what the hex code is, or have i maybe done something wrong?
Thank you again for you insight!
cubeberg (author)  fisher_g1 year ago
I'm not surprised. My files are over a year old so you're probably using a different version of the compiler. Plus - depending on the compiler options you chose. It also might through in date as well. If you have problems, you might try burning my hex file, but what you've got will likely work.
bdoyal2 years ago
Question before i start reading into the instructable. How much alteration is made to the top half of the disc? Are any parts removed and if so, which?

Also, is there any room left inside the disc for, i don't know, a data storage device?
cubeberg (author)  bdoyal2 years ago
Check out steps 2 through 4. There are no external changes, but the entire contents of the disc are gutted to make room for the new electronics.
There's probably some room for a flash drive, especially if you remove the case (although you'll need to insulate it with some electrical tape to protect against shorts).
bdoyal cubeberg2 years ago
So basically we go with the smooth the inside with a dremmel approach.

I really like this instructable, you only spent like 50 bucks and got a good looking device.

You click the button to change the animations right? So i could leave the blade one idle and itd stay on?
cubeberg (author)  bdoyal2 years ago
Correct - unless the magnetic reed switch (optional) is connected or the button is pressed, the device will stay on the blade animation. The code is pretty easy to modify as well, so more animations and functionality would be easy to add.
bdoyal cubeberg2 years ago
How exactly did you get the samples?
cubeberg (author)  bdoyal2 years ago
Check out http://www.ladyada.net/library/procure/samples.html for general sample info

To avoid the hassle though - I'd suggest this site: http://www.taydaelectronics.com/ - they sell the Attiny85 (will work with the attiny45 code) and the Max7219. You can pick up some perfboard and resistors as well.
googiecarr2 years ago
This is awesome! I'm going to go buy the stuff and start making it tonight! Hopefully I can finish it before Halloween.
jive2jazz2 years ago
Is there any reason you would want to avoid the low power version of the ATmega328? the atmega328P?
cubeberg (author)  jive2jazz2 years ago
I actually used the ATMega328P-PU for the project. The Max7221 used to control the LEDs operates between 4 and 5.5v, so as long as you power the circuit with those constraints in mind - you should be fine.
You should totally make one a clock!!!
fkhalsa2 years ago
Cool!

Tip: If you haven't already come across it, EL wire is pretty much a necessity for any properly outfitted Tron costume.

http://www.google.com/search?gcx=w&q=el+wire+tron&um=1&ie=UTF-8&tbm=isch&source=og&sa=N&hl=en&tab=wi&biw=1280&bih=929

The aqua and the orange are the perfect shades for Tron, and the consistent, unbroken light source is perfect, and better looking than LED's. Also it stays cool, which is nice for anything you're gonna wear on your body, and it's flexible, so it can easily be sewn into any costume.

Also, EL wire is just a lot of fun for anyone who's into DIY stuff!

There are a lot of good instructables on using EL wire too.
cubeberg (author)  fkhalsa2 years ago
I am actually trying to go the LED strip route with my daughter's costume. I found a way to diffuse it with Batting (the kind you use for quilting) that smoothes out the light. I've read a lot about EL wire in Tron costumes on therpf.com. They have some great tron costume threads (one is over 100 pages).
Cool! Good luck on your daughter's costume.
Chirpoff2 years ago
That... (!(echoes)!) coolness! Awesome!!!

FLYNN LIVES!
cubeberg (author)  Chirpoff2 years ago
Glad you like it! Thanks for your comment!
Zodiac47222 years ago
what kind of programmer do you use? You show it in Step 8 in the picture...and how fast kann you falsh your avr with it?
cubeberg (author)  Zodiac47222 years ago
I use a USBASP programmer. You can find them on eBay for around $6-$7 USD if you don't mind waiting for it to ship from China - although mine came very quickly (about a week).

I also had to build a target board (http://www.evilmadscientist.com/article.php/avrtargetboards) which requires a socket, perfboard, headers and some wire. There are actually tons of tutorials on this site for AVR programming as well. Another excellent resource is avrfreaks.net.

The USBASP programmer flashes the chips pretty quick - I'd say under 30 seconds. A much larger program would probably take longer, but it's fast enough I didn't even think about speed.
jberg102 years ago
I think nerds are hot, will you go out with me? ;-)
cubeberg (author)  jberg102 years ago
I'm pretty sure my wife might have a problem with that!
Nah, your wife says its cool. :-)
You may wish to look at Thor's Webpage http://goo.gl/G6bYS his disk mod tutorial is quite detailed and expands on the work done by the Harford Hackerspace Guys by using a Netduino Mini he also uses more led's and recharge circuit and li-po batteries.
cubeberg (author)  RapidPrototype3 years ago
Thanks for pointing that out - I actually ran across his Picasa album when I was doing my initial research, although I hadn't seen his blog.
One of the things I'd like to note is that he hasn't completed his project yet (or at least hasn't updated the blog to indicate he has), and says he's spent about $200 so far. Including $9 for the disc - I've probably spent under $40. That doesn't account for the components I was able to obtain as samples - but I was specifically going for inexpensive. Plus, if the disc runs out of power - it's simple enough to drop in a fresh set of AAA batteries.
zack2473 years ago
it looks really awesome!
one thing i would do is sand the inside of the transparent rings (the part the LEDs shine on) and that might help diffuse the light a bit more.

but it still looks awesome, and the possibilities with each led being addressable are endless!

maybe a version with rainbow colors just because?
cubeberg (author)  zack2473 years ago
Thanks! I never considered sanding the inside of the ring. It's a very rubbery material, so it would probably take some work to rough up - but a Dremel could probably do the trick.
I wish there was individual brightness control as well. There are other Maxim chips that support this, but they only come in QSOP packages.

I agree - an RGB version would be awesome!