The Party Starter




Introduction: The Party Starter

About: I make projects, they have names. Some are obscure and some straightforward. Form or Function; I go either way. Battery powered or edible, I love making things.
A desktop motorized musical disco ball.  Great for holiday parties, impromptu dance-offs, and Tuesday afternoons.   Bling, Music, Arduino, and glitter covered styrofoam; this Instructable has got what you need to get your boogie on.  Fires need help go get going, so do parties.   I recently moved from Hartford where my boys @HPSU( would get it started every week.  Now I live in boring Indiana, where there are no parties(Save church socials).  With that in mind and the Party Season upon us, Lets make.  

I have a glitch in the code, so it stutters every once in a while.  No biggy for me,  I'll fix it later.   I also would have showed myself dancing and partying in the video, but my clothes are matte and boring.  

More videos on the last step!

Step 1: Parts & Tools

Craft Parts
6" Styrofoam sphere
"8x4x2 Styrofoam block (Not Pictured)
Alot of 1" mirror pieces
Quite a few .25" mirror pieces
Krylon Glitter Paint-Get the big can
Adhesive/glue/epoxy of choice-Hot glue worked the best for me(after trying others)
Velco Pads
Electronic Parts
Arduino IDE (I'm still rocking 21)
Solder Iron
Glue Gun
Gloves/Face Mask/Eye Protection

Step 2: Underpainting the Ball

I wanted a base coat of reflective, shiny material so that anyplace where mirrors aren't has some reflective quality.  This ball used almost this entire mini can of spray paint.  The holder for the ball was quickly made by twisting some coat hanger wire into a shape that'd hold the ball off the ground. 

Step 3: Add the Mirrors

Start with the center line and work your way out.  Dab a bit of glue and place the tiles.  Don't worry too much about gaps, we are attaching square tiles to a circle after all.  That's why we painted it with sparkle paint.  
I had to take a break for the night after the top section was completed.  The glue I was using took FOREVER to dry.  The next day I switch to the ol' hot glue gun.  

Step 4: Finish the Ball

Now that the mirrors are all set,  We've got to use a clever way to attach it to the servo.   Velcro will be our mating material.  I don't want to ruin a servo and it'll be handy for transportation to be able to remove the ball.  

Step 5: Make the Base

Start by marking off where you want the components to go on the foam block
Like all cutting, measure twice and cut once.  
I used a Dremel to remove unwanted foam.  There are foamcutters, you could use a lighter, smash and tear at it.  Whatever your method, know that the servo must be tight so that all the torque and power is transferred to the party ball.   Also dremeling this foam turned it into a fake snow like substance, Lots of Fun, bad for the lungs-WEAR PROTECTION.
Go around, add a ton mirrors.  Try not to burn yourself on the glue or cut yourself on the glass. 

Step 6: Wiring

The servo is the only thing to wire up here.  5Volt, Ground and the signal wire(white) to pin9.  I've left room for LED's, Lasers, Buttons, etc. Add what ever you want.  Throw another servo on there and make a laser turret.  This is how I wanted mine, make your how you want it.  
We are not using the servo library in the Arduino code because it was being fussy with the other libraries.  I don't know why, but I just worked around it.  We are using a servo and not a different motor because of the ease that a servo will mount and attach.  

Step 7: Upload the Code

#include <AF_Wave.h>
#include <avr/pgmspace.h>
#include "util.h"
#include "wave.h"

AF_Wave card;
File f;
Wavefile wave;      // only one!

uint16_t samplerate;

void setup() {
  Serial.begin(9600);           // set up Serial library at 9600 bps
  Serial.println("Wave test!");

  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);

  pinMode(9, OUTPUT);

  if (!card.init_card()) {
    putstring_nl("Card init. failed!"); return;
  if (!card.open_partition()) {
    putstring_nl("No partition!"); return;
  if (!card.open_filesys()) {
    putstring_nl("Couldn't open filesys"); return;

if (!card.open_rootdir()) {
    putstring_nl("Couldn't open dir"); return;

  putstring_nl("Files found:");

void ls() {
  char name[13];
  int ret;

  putstring_nl("Files found:");
  while (1) {
    ret = card.get_next_name_in_dir(name);
    if (!ret) {

uint8_t tracknum = 0;

void loop() {

   uint8_t i, r;
   char c, name[15];

   // scroll through the files in the directory
   for (i=0; i<tracknum+1; i++) {
     r = card.get_next_name_in_dir(name);
     if (!r) {
       // ran out of tracks! start over
       tracknum = 0;
   putstring("\n\rPlaying "); Serial.print(name);
   // reset the directory so we can find the file

void playcomplete(char *name) {
  uint16_t potval;
  uint32_t newsamplerate;

  samplerate = wave.dwSamplesPerSec;
  while (wave.isplaying) {    

   digitalWrite(9, HIGH); 
  digitalWrite(9, LOW);  
// you can do stuff here!

void playfile(char *name) {
   f = card.open_file(name);
   if (!f) {
      putstring_nl(" Couldn't open file"); return;
   if (!wave.create(f)) {
     putstring_nl(" Not a valid WAV"); return;
   // ok time to play!;

Step 8: All Done!

Now go around and start a party.  

In your workshop

In the car

ShopBot Challenge

Participated in the
ShopBot Challenge

Holiday Gifts Challenge

Participated in the
Holiday Gifts Challenge

Arduino Challenge

Participated in the
Arduino Challenge

Be the First to Share


    • Mason Jar Speed Challenge

      Mason Jar Speed Challenge
    • Bikes Challenge

      Bikes Challenge
    • Remix Contest

      Remix Contest

    4 Discussions


    Reply 8 years ago on Introduction

    Thanks, glad you like it. I thought bout it and tried some variants. For lighting to work right it should come from the top and be alot brighter than your average 5mm LED. I have the 1watt LED I could use but finding the right mounting solution that doesn't kill the aesthetics is a challenge. Having said that, it's a challenge I hope to conquer.

    Dream Dragon
    Dream Dragon

    8 years ago on Introduction

    I really like the concept, and a portable mirror ball is very cool.

    I suspect you may not be getting the best our of that speaker having it mounted in foam. Try a block of wood for more resonance or look up a little more about efficient speaker cabinets, it wouldn't be hard to increase the sound quite considerably.

    I like the DIY approach to the mirror ball, but it's also possible of course to buy mirror balls and a variety of other reflective "thingies" (especially at this time of year) for a very small investment and save the time and effort and mess of making your own.

    Lighting? I agree, for it to be REALLY effective it does need to come from outside the main device, but SOMETHING in the machine would make for more visual interest and there's no reason it couldn't have an external source AS WELL!

    Finally, why on EARTH do you feel a need to include a microprocessor at all, and of all the micro processors you could have used why an ARDUINO? It doesn't seem to be anything more than a motor and a speaker. surely you could use the power of a micro processor to make the ball "dance" more in response to the sound and if you add some illumination maybe that could be controlled too?


    Reply 8 years ago on Introduction

    Foam because of the weekly contest. FOAM
    This was my weekly challenge triple play, Bling, Foam, Motors
    Buying a disco ball is lame
    Lighting, yeah I played around with it.
    Finally, read the instructable. The wave shield doesn't work with a pic or a 555. And if I really max out everything I could drive, I'd be looking at more current than that little chip can handle. lights off the remaining pins....I think I covered this. A 1watt luxeon that'd work shouldn't be driven by this anyway. Bling was my focus. I want a Beta Brand hoodie.