Goomwave - Reactive GameCube Controller LEDs

by goomysmash in Circuits > Arduino

6527 Views, 12 Favorites, 0 Comments

Goomwave - Reactive GameCube Controller LEDs

Goomwave 3.0
20200505_164903.jpg

Goomwave is an open-source, customizable, reactive LED system for use with GameCube controllers. It uses the Arduino IDE to upload sketches either to a normal Arduino or an ATtiny85 to read the GameCube controller signal and perform LED actions based off of those inputs.

In this tutorial I will show 2 different types of Goomwave systems.

Here's the link to my GitHub which features code for the 2 new types of Goomwave 3.0 systems

Steps 1-33 are for the front Goomwave that only lights up the ABXY buttons. This version uses an ATtiny85 an has a different set of code specifically for the limitations of the ATtiny85

Steps 34-69 are for the front and back Goomwave that lights up the back as well as the buttons and sticks. This version uses an Arduino Nano and is able to make full use of all of the programmed Goomwave modes

Steps 12-24 are for the wire routing system which is universal to both types of Goomwave.

So if you're making just the front Goomwave, follow steps 1-33. If you're making the front and back Goomwave, follow steps 12-24 then steps 34-69.

Supplies

Prep for Goomwave ATtiny85 Face Buttons Version

1588719330977440266253875865022.jpg
15887197427004652323077921850054.jpg
15887198302213226365573457456104.jpg

First mark cut lines so you have a protoboard that is 6x8 holes. Then break the protoboard along the lines with the vicegrips.

Solder on the SOIC Socket and JST Connector

1588720255014837094815527674745.jpg
1588720272843365059250508036097.jpg
15887224364218309704877357388514.jpg

Solder on the SOIC socket as shown.

Place a male and female end JST connector together. Placing the male end in is to prevent the female pins from melting/shifting while soldering.

Place the female end next to the SOIC socket as shown. You can remove the male end after it's soldered in place.

Solder on the Capacitor

15887212312582195877432638894630.jpg
15887226243782956850436836168940.jpg

In this case I'm harvesting the capacitor off of an old controller motherboard. You can also buy these directly the same as all the other components.

Bend the leads of the capacitor and solder it in. If using an electrolytic capacitor like I am make sure ground is facing the correct way,

Solder the LED and Switch On

15887228438021203688147059183123.jpg
15887246029245989580576825522221.jpg

Solder the LED on, making sure the ground end is facing out as shown.

Cut the leads of the LED and solder on the switch as shown. Make sure to have it as close to the LED as possible as shown. Afterwards cut off the excess protoboard with flush cutters.

Trimming the excess protoboard is important so it fits correctly in the front shell.

Bridge the Solder Traces

15887255552127300534411095482023.jpg
15887257275304489464448254700854.jpg
1588725858552834275147166320506.jpg

Add the male end of the JST connector back on.

Use the vicegrips to hold the protoboard in place

Take any color of wire and strip it approximately half an inch (5 protoboard holes) in length

Solder it as shown to bridge the connections

Add extra solder to keep ot secure.

Repeat With Other Wires

15887260287691231910716060016331.jpg
15887262748986141132262992199539.jpg

Cut off the remaining wire and strip the end, this time to 3 protoboard holes, and repeat as shown

Cut the remaining wire and repeat this time with 6 protoboard holes, but this time the wire will be bent

Add Green Connector Wire

15887264110656207977957025764147.jpg
15887266135758784724149170890151.jpg

Now take 8 protoboard holes worth of green wire and strip 1 hole of insulation from each end then tin the ends

Attach the green wire to each end as shown.

Bridge Pins and Add the Resistor

15887266997387650150261986843662.jpg
15887268190473134471330725700555.jpg
15887273118206878857076786405457.jpg
15887274804865529866037407437003.jpg

Bridge these 2 pins as shown.

Next solder half of the resistor as shown.

Then bend it so it touches the top left pin and solder to it as shown

Attach Wires to LEDs

15887409811053858351459036216148.jpg
15887412712915550597287057830755.jpg
1588741458007414166938359503959.jpg
15887417444468667913521003022494.jpg

Cut 3 wires, each a different color 20 protoboard holes (2 inches) in length. In my case green will be 5v, yellow will be ground, and red will be data. Keep this the same throughout the project. Strip the ends of the wires 1 hole length. Dip the ends in tinning flux.

Next cut 3 LEDs in a row from the strip and apply solder to the pads nearest the back end of the arrow

Now attach the 3 wires to 5v, data and ground on the LEDs

Afterwards add hot glue to the connections for better long term durability

Connect LEDs

15887531479767140891918810744657.jpg
15887532073541162858907355236872.jpg

Attach the LED wires to these spots on the ATtiny85 protoboard as shown

Fold the wires back until they're all straight and line up with each other

Add the Final LED

1588742682026714619667984832887.jpg
15887429637858689963503865398511.jpg

Cut 3 more wires. This time 13 protoboard holes long, and attach another single LED in the chain. Make sure to hot glue all solder connections

Drill Hole in Rumble Housing

15887449373698766099172060638554.jpg
15887451179037374522152487481067.jpg
1588745228585570069839015313928.jpg

Steps 12-24 will focus on the wire routing system. These steps will be the same regardless of which type of goomwave system you're doing.

Unscrew the controller and remove the rumble motor housing

Use a power drill and a 1/8" bit to drill a hole in the rumble motor as shown

Use flush cutters to cut to the edge of the hole

Break Off a Plastic Square for the Controller Connector

15887454247717264573692259384422.jpg
15887453323253461066014177986709.jpg

Cut in the front as shown. Break off the cut section by twisting up and down with the flush cutters.

Cut Horizontally to Hold the Controller Connector

15887454750471939306418049901637.jpg
15888498222802950140502429415437.jpg
15887456228073817757219579193633.jpg

Now carefully cut horizontally as shown on both sides. This may require additional expanding of the slits later to fit the thin protoboard in.

Cut Channels for Wires

15887458291249001431281044159874.jpg
15887458614961342500522593066442.jpg
15887459152378376088579009998138.jpg

Next cut a few channels in certain places

Cut Triangles

15887461234627778377361070425457.jpg
15887460988497349230346443665572.jpg
1588746029187383912970197149560.jpg
15887459862687014540700810896920.jpg
RumbleHoursing.jpg

Cut a few triangles in the R digital press holder section

Cut Wires and Protoboards

15887479006995776126479821143984.jpg
15888371583784174898306236591027.jpg
15888510869288028126188598707517.jpg
1588851118933576563178700213014.jpg

Cut 3 8" wires and strip and tin the ends.

Break a normal protoboard into 3x1 holes amd a thin protoboard into 5x1 holes

Make Wire Routing System

15887483242911947125171575576232.jpg
15888512647986146707274772590722.jpg
15887485905584434480406860520558.jpg
15887488224051202971423946010358.jpg

Take a female and male mated pair of JST connectors and attach the 3x1 to the male end and the 5x1 to the female end. (Female end with 7x1 thin protoboard is shown but should be 5x1)

Attach the wires as shown to each end

Hot glue the male end.

Trim the Pins of the Female End

15888232020611917591610063653090.jpg
15888232992185349680745325435144.jpg

Trim the pins of the female end of the controller connector

Attach the Controller Connector

15887490425781781070182462363733.jpg
15888214003911283561670292881794.jpg
15888181979591464693441952201794.jpg
15888227559003134627124482267294.jpg

Add a dollop of hot glue to temporarily keep the female end in place. Make sure to tuck the thin protoboard underneath the plastic triangles.

Add small amounts of hot glue only to the top part of the thin protoboard. If glue is added to the bottom and sides it will interfere with the placement of the cord

Pull the Wires Through the Channels

15887491742316279094713317395769.jpg
15888182422802367527395128163501.jpg
15888182269531200910966836592002.jpg
15888184016224058533314126367347.jpg

Pull the wires down through the drill hole and into the channel. Then hot glue it in place and squish it once it's half cooled with a finger to flatten it. If the hot glue isn't flattened it can interfere with the shell while closing.

Use your thumbnail to bend the wires into the corner, then route them through the next channel.

Hot Glue

15887494526881955142324751267626.jpg
158874959404344333957446208236.jpg
15888188009451769963689125461496.jpg

Hot glue the wires in the corner, making sure if there's any excess hot glue that it's near the top rather than the bottom. If glue is near the bottom it will interfere with the controller being able to close

Route the wires through the triangles on the R digital press holder and pull them down afterwards. Add more hot glue in the triangles to keep the wires in place

Make a Male-end Connector

1588739889620726673284082483793.jpg
15887516677256042551643486488419.jpg
15887518626948194737258769309615.jpg

Take a male ended JST connector and add a 3x1 protoboard to it

Cut 3 2.5" wires, strip the ends and tin them, then attach them to the connector as shown

Hot Glue and Attach Connector to Controller

15887519427028894600777983845277.jpg
15888187469888388845342639136881.jpg
15888187679371146506610351626454.jpg
15887521973759204639386650907510.jpg

Drape the wires to the side as shown then add hot glue

Solder 3 pins to the gamecube controller cable pins as shown

Upload Arduino Sketch

15887535775138091593879240510028.jpg
15887537145571040867766545208077.jpg
15887538151209184935956258268890.jpg

Upload the arduino sketch. After its uploaded, unplug the usb and transfer the ATtiny85 to the LED chain using the special tweezers to remove it (if you use your fingers you risk bending one of the corner legs)

Make sure the dot on the Attiny85 is on the same side as the notch of the SOIC socket. If it it backwards it can fry your chip, leds, controller and/or wii.

Attach the Rumble Housing

15888347561345363255810563641369.jpg
1588834694419787067213909517436.jpg
15888348124851741898870746950956.jpg
15888348437094048616266099836466.jpg

Attach the L and R digital press boards as normal

Attach the controller connector to the rumble housing connector

Put on the rumble pack and make sure the rumble pack stick goes over the wires

Tuck the LED chain connector under the c stick cable

Create a Spinny Stretchable Cable

15888353547094450107399862795113.jpg
15888353837543429177631002720224.jpg

Tightly spin the cable around a triwing to create a stretchable cable

Test LED Chain

1588754622389489328120160494065.jpg
15887546837674173099368608558963.jpg

Plug in the controller, attach the LED chain and see if it turns on. Make sure the switch is in the "on" position.

If it doesn't light up, there's likely something wrong with a solder connection, or an LED may have blown if you put the ATtiny85 in backwards at some point

Cut Slits in the Faceplate for the LEDs

15887549103347394578669275372955.jpg
15887550481737672339444231680152.jpg
15887554234394830124057228415820.jpg
15887554732546803004068231843045.jpg

Cut slits in the faceplate with the flush cutters. Wiggle the piece back and forth until it breaks off. Do this with the other 3 buttons as well

Cut Additional Slits to Make Room for Things

15888148268012964761352126134797.jpg
15888130034423426538013280451751.jpg

Use the flush cutters to cut off a few of the plastic supports on the back and cut out a small section on the front plate to make room for the wires

Press Fit in the LED Chain

15887550897913040477684179129868.jpg
15888179789693678006778125465048.jpg

Bend the LED chain at a 90 degree angle as shown.

Press fit the LED chain body into the front of the controller as far to the end as possible

Press fit all the LEDs into position as shown and use tools to push them as far down as possible

Add Hot Glue for Added Stability

15888176161403490209189676198335.jpg
15888180893057652573086350972228.jpg
15888180687182334794635187720929.jpg
15888179588607892337734543163506.jpg

Move the press fit LED chain body and add dabs of hot glue to each side that it contacts, then put the LED body back.

Add hot glue to the LEDs as well for added stability (they should stay without any hot glue but the hot glue is just for added stability)

Tuck the wires going the LEDs to the side

Final Step of Front Goomwave: Closing the Controller

15888364582265540471803490635929.jpg
15888364900589175571551474312255.jpg
15888190306007072062876336270161.jpg
15888239979018174211124334713507.jpg

Place the motherboard on the front shell

Attach the spinny connector to the LED chain body and move the spinny wire out of the way of the shell

Attach the cord as normal

Put the back on (it should fit normally without much or any extra resistance) and screw in the screws

CONGRATS you're done! (With this version)

First Step of Full Goomwave: Make Board With Connectors

15888454807705456555786002013538.jpg
1588845608445182892650460792933.jpg
15888457556024910339769881151108.jpg
15888468976797865501406830694212.jpg

Take 2 pairs of male and female JST connectors. Color one black. Solder both of them to a 1x12 prototboard as shown

Bend Pins and Solder to Arduino

15888471111276806226598391936913.jpg
15889234470386798373217434583067.jpg

Bend the pins 90 degrees with the pliers and vicegrips, then solder them to the Arduino as shown. Cut the excess of the pins off with flush cutters

Cut Wires and Attach to Arduino Pins

15888476030765218372658802364474.jpg
15888479490642759970313920177307.jpg
15888481773443507105216225535203.jpg

Cut 1" of green wire and attach it from the JST connector to the 5V of the Arduino as shown. Also attach the data from the black JST connector to D2 on the Arduino with a 2.5" wire

Attach the Remaining Wires

15888484874601555647934683129508.jpg
15888485302343661387555660805897.jpg
158884871627164915181458793694.jpg
15888489674682929163030118336981.jpg
15888489861215211319052781481809.jpg
15888491952592358561620813784025.jpg
15888492151333355289919773858402.jpg
15888486896473907262365718278186.jpg

Cut 2.5" wires and attach the wires as shown. The 2 yellows should go to ground and the 2 greens should go to 5V. The black JST connector's red wire should go to D2, the white JST connector's red wire should go to D4.

Cut, Strip, and Tin Wires

15888545897751819627881922232241.jpg

Cut 18 (15 pictured) 2.5" (up to 3" is OK) wires, strip and tin the ends. These will be for the bottom LEDs

Make Black Connector for LEDs

15888893132488248075877710480357.jpg
15888893990523355343062953926142.jpg
15888895121904886054701380023707.jpg
15888896685848357572311689425827.jpg

Break a 3x1 protoboard and solder a male JST connector to it. Take 3 of the 2.5" wires and solder them to the connector as shown. Hot glue the connection after

Attach the Black Connector to an LED

15888897938327633997457885203831.jpg
1588889831141777425974083045230.jpg
15888899374375578728272464743987.jpg

Clamp the LED in place, apply solder to the pads, attach the wires from the black connector as shown, then hot glue the connection

Upload, Attach the Arduino, Test the LED

15888912809156810239688031560447.jpg
1588891223225830369092929666535.jpg

Upload the sketch, and attach the Arduino to test the LED. If it doesn't light up there's likely a problem with a solder connection somewhere, or the LED may be fried if 5V and GND got connected at some point

Attach Wires to the End of the LED

15888914017574353828916625747218.jpg
15888915244551157154256645903194.jpg

Clamp the LED and solder 3 wires to the exposed end as shown

Repeat the Previous Steps of Attaching LEDs

15888920017565842179761581068622.jpg
15888924169681717362905607781706.jpg
15888933424337429092679979544387.jpg
15888937253502218809600849409050.jpg

Repeat the previous steps of attaching and testing the LEDs until you have a chain of 5

Make and Attach the Black Female JST Connector

15888939325654967308567307378250.jpg
15888941411621152104058621181503.jpg
15888943001511967407213097603968.jpg
1588894382258213663689194355017.jpg

Cut and attach a 3x1 protoboard, attach the wires on each side

Cut Leds for LED Chain Section 2

15888950045263154445190044004966.jpg

Cut 5 single LEDs and 1 set of 3 leds in a row

Cut 15 1.4" Wires

15888992018002545867719754023230.jpg

Cut, strip, and tin 15 1.4" wires (5 of each color)

Cut 3 8" Wires

15888990991078245887283340555749.jpg

Cut, strip and tin 3 8" wires

Make Black Connector to LED

15888995311302607190515707953077.jpg
15888995995384978233677691970828.jpg
15889002751356086688892820680076.jpg
15889000817772377686410603187507.jpg

Cut 3x1 protoboard, attach to black male end, connect, hot glue

Test the 8" Connector

1588900200569191492243581342078.jpg

Plug into the female end of the 5-led chain and test to see if it turns on

Attach Another LED to the End

15889005612235025530750024645812.jpg
15889008327447670700423987641123.jpg

Attach 3 of the 1.4" wires to the end and then to an LED and hot glue the connections

Attach and Test More LEDs

15889034288495074299943268232498.jpg
15889043604865767195668429813970.jpg

Attach and test more LEDs until you have a chain of 4 coming from the 8" connector

Add 3 LEDs Then 1 on the End

15889045728193999265840467698213.jpg
15889048802598322282484363841212.jpg
15889052561884064187032017837122.jpg

After the chain of 4 LEDs, attach a row of 3 LEDs that haven't been cut, and attach the final LED on afterwards, and test after each LED has been added.

Wrap LEDs in Tape

15889061127091143022660733033272.jpg
15889061525863977432964129065899.jpg
15889062090333413523231884321026.jpg
15889062987087592026963696249723.jpg

Peel off the back brown tape that holds the adhesive on the back of the LED, break off square of scotch tape, and tape around the LED. This is to "future proof" them while hot gluing them to the shell in case corrections need to be made it doesn't mess up the whole LED chain cause the hot glue sticks to the other hot glue

Tape the Rest of the LEDs in the Chain

158890665681462450724270714707.jpg

Tape the rest of the LEDs in the chain

Cut Parts Off of the Shell

15889070325134295469257489311845.jpg
15889080163365899231503785884890.jpg
15889071307971020423877483980150.jpg
15889071730536602060399109591165.jpg

Cut parts off of the shell as shown to make way for the wiring for the LEDs

Cut More Parts of the Shell Off

15889073830244903489007234677327.jpg

Use the flush cutters to cut off the 2 inner support ridges as well as the bottom outer support ridge to make way for the Arduino

Hot Glue Down LEDs

15889078978372651141402407168988.jpg
1588908404393997307939798500553.jpg
15889086003168394107208255349141.jpg

Make sure the LED chain is facing the correct way. The female end of the connector should be on the right and should be directly attached to the first LED being glued down on the left handle as shown

Glue the Rest

1588908797551883095214865205505.jpg
15889089216641966505474821908612.jpg

After gluing make sure all wires are tucked down and out of the way as much as possible

Glue Female End of Connector

1588909113666374003665091450867.jpg
15889092848514382097374412257610.jpg

Add copious amounts of hot glue to the sides and bottom of the female connector and place it in between the 2 support ridges as shown

Move Connector, Prepare Arduino for Gluing

15889093793774090943454118411005.jpg
15889094363261938494154171389393.jpg
15889094798331357106075861143343.jpg
1588909576877283727231878210947.jpg

Move the connector wire into the position shown, bunch up the wires on the Arduino as shown and place so that all the wires are bunched up in 1 section of the support ridges. Remove the R button and attach the programming cable so it's positioned to be able to be programmed after you hot glue it

Hold and Glue Board

1588909647064327465910537857163.jpg
15889099696267564061218554209746.jpg
15889101301639046732768085443373.jpg
1588910966274941209162226436520.jpg

Hold the board as far to the edge as possible then inject large amounts of hot glue into the ridges next to the Arduino that don't house the wires. After the first injection has dried you may need to refill the top again. Also make sure to glue the bottom portion as shown as well

Cut Front Plate

15889126228858582850329918425797.jpg
15889127128099083173383245284332.jpg
15889127782116418193287531706558.jpg
15889138513003506420896063027630.jpg

Use flush cutters to cut out parts of the front plate. Similar to the steps with 4 faceplate LEDs

Cut Additional Spots on Front Plate

15889128740215688829879663784693.jpg
15889129808045817323967458752576.jpg
15889135113384077008988690637904.jpg
15889124698475598480809333656386.jpg

These spots are different/in addition to the 4 ABXY buttons.

Hot Glue in Stuff

15889140615113111231600715417664.jpg
15889140916584748159104760203324.jpg
15889141744063360671632756663027.jpg
15889144315628931734661757087945.jpg

First route the chain of 8 LEDs as shown. The LEDs should more or less stay in place without any glue except for the start button and analog stick. Hot glue those down first.

Hot Glue the C Stick and Prepare to Glue the Connector

15889155458395457235997831341932.jpg
15889147038028273175192431302470.jpg

The C stick should be as far down as possible. The higher it is the more likely it is to interfere with the C stick. Add very minimal hot glue for the C stick. The other LEDs don't require hot glue if they're staying without it

Prepare to glue the connector by wrapping it as shown

Hot Glue and Wrap Up the Connector

15889148789672497028737951374403.jpg

Add a large dollop of hot glue as shown. After it's dried use a triwing and wrap the wire around tightly to make a springy connector.

Cut the Top of the Start Pad

1588914981981601583025393514559.jpg

Cut the top of the start pad so it fits flush like normal given that the start LED is too high

Connect the Connectors

15889151605325026445481498576089.jpg

With the motherboard in and controller facing down, connect the 2 connectors, 1 white connector on one side and 1 black connector on the other side. Place the back on like normal. It may take some wiggling but ultimately should sit like normal without needing to be excessively forced

Screw It in and BAM We're Done

15889163219535144649721224093980.jpg

Congrats if you made it this far! This is no easy task. If this is way too much work and you'd rather just buy this or similar products, check out my website.