Introduction: Artemis & Apollo: Dancing With Arduino and Light Detection

About: A group of 3 students from the University of Colorado Boulder who like to make things that think.
According to Ancient Greek mythology, Artemis and Apollo were immortal twins born ages ago on a rocky island in the Aegean Sea. Artemis, her hunting bow poised and fleet feet padding the forest floor, reigned as Goddess of the Moon. Her twin brother, Apollo, strummed his harp and recited poetry from his throne as God of the Sun.  Using an Arduino UNO microcontroller and a simple photo resistor (sensor), you can recreate this mythological pair as elegant figurines that dance according to their divine preference. Apollo, ever dazzling, dances in the light of day, while Artemis, forever fierce, dances in the shadow of night. 

A half-opaque, half-transparent acrylic rotates at the top to the model, creating a varying input of light for the photo resistor light sensor housed on the back of the eagle. When the transparent acrylic half is above the sensor, the light is detected and the Arduino activates the motor for the Apollo figurine. When the opaque acrylic half is above the sensor, no light is detected and the Arduino activates the motor for the Artemis figurine.

This project utilizes simple gear and cam machinery paired with stepper motors to move two wooden figurines. The actions of the motors are controlled by an Arduino UNO that uses a photo sensor to detect varying light input.

This project began as an assignment to integrate Arduino technology with the tradition of moving automata in the Things That Think course by Ann and Mike Eisenberg at the University of Colorado Boulder. 

Step 1: Setting Up the Motor Shield

Materials:
1 * Adafruit Motor/Stepper/Servo Shield for Arduino kit - v1.0

Tools:
soldering iron
solder
wire clippers

In order to connect our three motors to the Arduino Uno, we opted to use a motor shield. A motor shield fits on top of the Arduino and, once set up, allows the easy connection of up to three motors, including all resistors and chips necessary. The motor shield we used for this particular project was the Adafruit Motor/Stepper/Servo Shield Kit v1.0 available at http://www.adafruit.com/products/81.

When the motor shield arrived it was unassembled, so we put it together following Adafruit’s online soldering tutorial. (http://www.ladyada.net/make/mshield/make.html) The tutorial is very straightforward to follow, although some parts look different from those in the example pictures, so make sure to take note of that if you use this particular motor shield kit. If it is your first time soldering, be sure to practice with the soldering iron and solder a few times before you begin setting up the motor shield. This kit is completely feasible for a first time solderer (as we had in our group) but it will require some patience.

Step 2: Choosing Your Motors

The motors required for rotating each of the automaton need gear boxes because the torque required to turn each of the automaton is greater than the amount of torque each dc motor by itself gives.  One needs to understand the amount of voltage required for each dc motor before buying one because the arduino cannot supply enough power as the amount of motors you have increases.

Materials:
2 * dc motors
1 * servo motor
2 * gearboxes

Tools:
tools required to build each gear box is usually supplied by the gear box kit

Steps:
1.) Choose the gear ratios for each gear box based on how much torque you need.
2.) Higher gear ratios give more torque.
3.) Choose a servo motor which can go 360 degrees because majority of servo motors cannot and only go from 0-180.

Step 3: Make the Circuit Logic

The logic is for the connection between the photo resistor and the arduino board.

Materials:
arduino photo resistor
1 * 1k ohm resistor
3 * small wires
1 * perforated board

Tools:
solder
soldering iron

blue= 3 wires
purple=perforated board cut into smaller pieces
green= 1k ohm resistor
red=header pins to fit into the top of the motor shield

You need to create a circuit similar to the 2nd picture.
where the arduino is pin 0 analog input on the motor shield

1.) Cut perforated board so you have enough space to put logic in it
2.) Solder the header pins into the board so it is able to be placed directly on top of the board
3.) Solder 1k ohm resistor into perforated board.
4.) Solder wire from 5 v header pin to 1k ohm resistor.
5.) Solder wire from header pin arduino input socket 0 to other side of 1k ohm resistor.
6.) Solder wire from ground header pin to a spacious place near where you soldered from the previous step

The next step will be assembling the photo resistor.

Step 4: Arrange the Photo Resistor

The last step made the logic for the photo resistor.

Now we need to make the photo resistors length to extend at least 22 inches so that it can reach the top of the model.

materials:
2 * wire at least 22 inches long
1 * wire wrap 1/2 inch width and at least 20 inches long or you can have a bunch of small sections
1 * photo resistor

Tools:
solder
heat source

Steps:
1.) solder each wire on the each end of the photo resistor.
2.) wrap the two wires in the wire wrap (leave the other end not connected to the photo resistor open).
3.) apply heat (shrinks the wire wrap around two wires).
4.) solder one of the wires to 1k ohm and input value 0.
5.) solder the other wire to the ground wire.

We created another hub to hold the two wires but you can directly connect them to the logic.

Step 5: Dancer Figurines

Materials :
Bass wood
Hot glue, wood glue
acrylic for bow and harp
fishing line

Tools :
Laser cutter
Sander
Wire cutter

If you have laser cutter, it is significantly easier to make figurines by cutting thin basswood. You can use our attached Adobe Illustrator template of for the figurine, or search other images from the google image search. (Doll cutout blueprint originally found at http://www.theenchantedgallery.com/template.html). To change an image to a usable Adobe Illustrator file, load blueprints to AI and change the image to a vector image with menu > file > live stream. After you have your figurine template, set the outline to vector cutting and run the laser cutter. To keep the figurine joint-articulate, you can connect the jointed body parts with wires. Make a spiral at one end of the wire and thread it through the jointed pieces, making another spiral closure on the other end. This will give your figurine natural movements. Be sure keep the wire slack enough that all joints swing naturally, but not so loose that the figurine bodies become ragdoll-like when they move.

It is also important to organize the layer sequence of each body parts. As artemis holds the bow in her left hand and steadies an arrow with her right hand, it is better to place her right arm behind her body and her left arm in front of her body. (See pictures of Artemis & Apollo)

We also scanned a hand-sketched drawing of a bow and harp. You can use our bow and harp templates or make your own. To make your own, load your sketch into AI and use the same steps for live stream as described for the figurine outlines. You can adjust your image’s vector direction by clicking blue squared dots beyond outlines. Use the fishing line to add strings to Apollo's harp and a string to Artemis's bow.

Our laser design files for Artemis and Apollo are attached.

Step 6: Clothing & Decorating

Materials :
Fabric (Satin white for toga, yellow for Apollo's cape, Blue for Artemis's cape)
Yellow glitter button (for fix Apollo's cape)
Clear button (for fix Artemis' cape)
Gold wires for crown
Black adhesive backed felt
Gold strings for Artemis' anklet
Thread (white, yellow, blue)

Tools :
Needle
Scissor
Wire cutter

Make girlish toga for Artemis by separating a skirt and shirt. As she is a hunter, it is better to make her skirt short to run fast, and sew it, giving natural pleats. Sew masculine toga for Apollo. It is optional to make cape for them, but if you want to do it, it is better to give colorful characteristic, that 8 inches long and 5.5 inches wide yellow one for God of Sun, Apollo, and 5.5 by 5.5 inches square blue one for the Goddess of the Moon, Artemis. With adhesive backed felt, golden string, and gold colored wire, we made some gadget for god and goddess from ancient greek myth. Attach an anklet with gold strings for Artemis, and do it for Apollo too, with black adhesive backed felt.

Step 7: Manufacturing Mechanisms and Individual Dancer Bases

Materials :
Basswood
5.5” of ¼” dowel5.5” of ¼” dowel
3” of ¼” dowel (Apollo’s connection to motor)
2.5” wooden dowel [” diameter x2 (for beveled gear knee supports)
.25” wire wrap for each axle (as a stopper)
Wire wrap
Strings
Paraffin and Graphite
Wood glue

Tools :
Wood cutter
3D printer
Drill
Laser cutter
Sander

For jumping Artemis, cut elliptical cam and build up cube block with basswood. Our template for a 3 inch tall by 1 inch wide elliptical cam with center hole is included in this Instructable. For the cube block, cut a 0.375 inch groove in a wooden cube, or build up a similar structure by layering thinner pieces of wood. Our cube block is 1in x 1in x 1.25 in dimensions with a 0.375 inch groove. Drill the hole for the figuring support stick halfway deep into the cube. Fabricate base box to house the cam and cube block. Sand the edge of the cam and the inside of the cube block and make sure to apply paraffin or graphite before operating the cam, axle, and dowels in order to let it spin softly.

For spinning Apollo, 3D-print a pair of the beveled gears with knee connector. For beveled gears we used nycdesigner's thingiverse.com blueprint found here. Because the motor for Apollo sits horizontally and rotates around its x-axis and we want Apollo to stand straight and turn around his y-axis, we need to change the direction of the gear movement by using beveled gears. Once you have printed the gears and knee connector you need to drill a hole through one arm of the knee connector, continuing the 3D-printed hole all the way through to the other side. This is to make space for the support dowel that holds the connector in place, the ends of which will be secured in the walls of the housing box itself. Be sure to make this hole straight!

To fix two dancers to each mechanics, build up outside box. First, stand two walls, which has a hole on each side of it to let the axle pass through, to the bottom wood. After gluing bottom and side walls, insert a wooden dowel and fabricate cam with a middle hole of it for Artemis, and fabricate the two 3D printed gears for Apollo. After fabricating axles and outside box, cover the end of horizontal axle to fix with wire wrap, and also fasten inside of axle with thread so it doesn't move side to side.

Step 8: Spinning Acrylic Mechanism and Support

Materials:
17" aluminum tubing, 9/32" diameter
1 * 3D printed beveled gear set
2.5” wooden dowel
0.25” wire wrap for each axle (as a stopper)
wood for base
heavy wire

Tools:
drill
handsaw
hot glue

Create a housing base for the center spinning mechanism that is just like the housing for the Apollo figurine's. This spinning support will utilize the same beveled gear system as Apollo's mechanics, but it will spin continuously to rotate the acrylic shade. 

To fit the 9/32" diameter aluminum tubing in the gear, you will have to make the hole larger with your drill. You will also need to extend one of the knee support holes through the knee itself, just like you did for Apollo's mechanism. Glue the tubing in place inside the gear.

Because this tubing is hollow (it's important to keep the weight low) you will need to use a small piece of heavy wire in the top hole of the knee support to keep the top gear on track. Cut a short piece of heavy wire (<1") and stick one end into the top hole of the knee support. You can then fit the tubing and top-gear setup onto the knee with the wire keeping it on track from the inside. Add the other beveled gear to a dowel, glue in place, and make sure the setup looks just like the Apollo mechanism.

Drill a hole in your stage piece in the very center to make room for the tubing.

Step 9: Getting the Figurines Onstage


Materials:
2 * 18" diameter circles from 1/8 in wood or particleboard
2 * 20.25" dowels (0.5" diameter)
4 * 7.5" dowels (0.25" diameter)
2 * 7.5" dowels (0.5” diameter)

Tools:
ruler
drill
wood glue/hot glue
level

Once you have  the figurine mechanisms set up within their individual housing and you have your large holes drilled for your structural dowel supports, you can decide where you want your dancers to “live” in relation to the stage. Mark on your large circle stage cutout where you want to drill your holes for the figurine puppet sticks.

To achieve good figurine/column spacing, draw a midline on the stage circle and measure 5 inches in from each side on that midline. Now move those marks 1.5 inches downstage (towards the front of the stage) and this is roughly where you should drill for your figurine stick supports to come through the stage.

Once you are ready to attach your stage to the rest of your base, you can also glue the figuring housing boxes onto the base. Just make sure to line them up with the holes you’ve drilled in your stage. (We recommend adjusting the stage and the figurine mechanism housing boxes with the figurine support sticks in place before gluing the boxes to the base, just to be sure that the holes are lined up properly and the support sticks have a clear vertical path.)

Step 10: Greek Columns

Materials:
3 * 3D-printed columns from thingiverse.com
8 * 2” x 2” white acrylic squares
4 * 2" x 1.25" white acrylic rectangles

Tools:
3D printer
hot glue


To achieve a very Greek aesthetic, you can use stylized columns to add to the look of the stage. Use a 3D printer to make these columns found on thingiverse.com by user PabloFerroDesign. Before printing, scale the columns by 1.16 to achieve the right height. These columns will need to fit over the tall structural dowels on either side of the stage, so once they are printed drill a hole through the top and bottom pieces. 

The bases for the columns are made by creating a simple box from the white acrylic. Use four of 2" x 2" acrylic squares to make a box by hot gluing the edges of the four pieces together. Repeat for remaining 2" x 2" squares. For the base of the center column, the height will need to be slightly shorter, so make a box using four 2" x 1.25" acrylic squares.

Once you have the column bases complete, slide the larger ones over the two structural dowels and add the columns on top of that. Before you can add the center column, you must make sure you are ready to pull your photosensor wire through the column. Add the smaller base and as you are sliding your column onto the aluminum dowel, push the photosensor wire up through the column. This can be challenging because of the internal webbing of the 3D-printed column, so be patient. Glue the columns to their bases and column bases to the stage. 

Step 11: Acrylic Shade

Materials:
1 * 6" diameter semicircle blue opaque acrylic, 1/8" thickness
1 * 6" diameter semicircle yellow transparent acrylic, 1/8" thickness
1 * 1" diameter clear acrylic circle with 9/32" center hole, 1/4" thickness

Tools:
laser cutter
acrylic glue

Take your two acrylic semicircles (one blue, one yellow) and combine them to form a full circle using acrylic glue. Find the center of your new circle and attach your 1" diameter clear acrylic circle there. This will be the support that holds your acrylic onto the aluminum dowel as it spins. Try out your acrylic on the dowel and see if it fits securely. If not, you can use some wiring shrink wrap at the very top of your dowel to make it fit more snugly.

Step 12: Temple Top

Materials:
1 * 17" x 1.5" clear acrylic rectangle
2 * 9" x 1" clear acrylic rectangle
1 * Sun & Moon emblem on clear acrylic, 1/4" thickness

Tools:
laser cutter
hot glue

The long piece of clear acrylic will serve as the horizontal structure for your temple top. Take the two shorter pieces of clear acrylic and use them to form a triangle with your longer piece. You may adjust the height to your liking by moving the ends of the shorter pieces closer to and further from the ends of the long piece. Having the ends of the shorter pieces about 0.25" from the edge of the long piece makes for a nice height. Glue the pieces in place.

The Sun Moon emblem can be made in a laser cutter using 1/4" thick clear acrylic. The design was borrowed from a piece of jewelry by Rosenfeld Jewelry, Inc. You can find the adjusted Sun Moon emblem template attached to this Instructable. Set your laser cutter to rasterize the teal area and vector-cut the red circle outline. Once you have the emblem rasterized and cut, hot glue it inside the triangle of your temple top.

If your acrylic shade is in place, you can glue your temple top to the tops of the outside columns. There should be space in between the acrylic shade and the base of your temple top so that the shade can spin.


Step 13: Eagle of Zeus

Materials:
Eagle of Zeus cutout, 1/8" thick brown acrylic

Tools:
laser cutter
hot glue

The eagle between the two figurines acts as an aesthetic prop for hiding the photoresistor but also adds to the story of the twins. In mythology, Zeus is the father of Artemis and Apollo, and he has a loyal eagle servant that is called the Eagle of Zeus. This bird sends his messages and carries out his orders. In our setup, the Eagle of Zeus helps the twins determine who gets to dance by housing the photo resistor that controls the motors. 

Use the attached Adobe Illustrator file to cut out the eagle on the laser cutter. First, set your laser cutter to rasterize the teal area. Then, BEFORE moving your acrylic at all, reformat your AI image so that just the outline gets vector cut. We did this by making the whole eagle one color, changing the outline to 0.01pt red (for vector cutting) and then making the image no-fill.

Once you have your Eagle of Zeus cutout, hot glue it to the photo resistor wire, making sure that the sensor is face-up towards the acrylic shade. 

Step 14: Mount the Motors on the Base

Mounting the motors requires the motors to be lifted higher to match the height of the axle of each automaton and connecting the axle of the motor to the axle of the automaton.  This process is simple measurement and depends on the type of gear box you use and/or motor you use.

Materials:
wood

Tools:
glue
screws
screw driver

Steps:
1.)Measure distance to axle
2.)Measure distance from motor axle to bottom of engine
3.)Make a platform that has the height of the difference between the two
4.)screw or glue the motor on top of the platform made.
5.)Connect axle by wood medium in between motor axle and automaton axle.  We did it by super gluing the automaton axle to the wood medium and screwing the gear box axle to the medium and in the case of the servo motor we super glued the medium to the motor axle.  glue the bottom of platform to base.
6.)Repeat for all 3 motors

Step 15: Mount the Arduino on the Base and Connect the Motors to the Motor Shield

This step is fairly simple because the motor shield provides all of the logic that we don't need to make.

Materials:
2 * motor gear boxes
1 * servo motor

Tools:
a small screw driver
tape
glue

Steps:
1.) stick the foam on the base with glue or tape where you want to put the arduino which should be close enough to each of the 3 motors.
2.) place the arduino on the foam with double sided tape.
3.) if wires are too short to reach then re-solder new wires onto each of the gear boxes.
4.) Connect motor gear boxes to connection sockets for motors 1 and 2 on the motor shield.
5.) Connect the servo motor on the servo connection farther from the edge ( pin 9)

Step 16: The Code

Fairly simple code.  We added functions to make the code more intuitive and know what everything does.
comments explain what most everything does.


The code:
#include <AFMotor.h>

#include <Servo.h>
//photo resistor pin
int LDR =0;

// motors
Servo myServo;
AF_DCMotor centralMotor(2, MOTOR12_64KHZ);
AF_DCMotor artMotor(1,MOTOR12_64KHZ);

//servo pin and light variable
int servoPin = 9;
int lightread = 0;

//Acrylic Controls
//----------------------------------------------------------
void AcrylicClockWise()
{
  centralMotor.run(FORWARD);
  delay(300);
}

void AcrylicCounterClockWise()
{
  centralMotor.run(BACKWARD);
}

void AcrylicStop()
{
  centralMotor.run(RELEASE);
}
//----------------------------------------------------------

//Artemis Controls
//----------------------------------------------------------
void ArtemisStart()
{
   artMotor.run(FORWARD);
}

void ArtemisStop()
{
  artMotor.run(RELEASE);
}
//----------------------------------------------------------

//Apollo Controls
//----------------------------------------------------------
void ApolloClockWise()
{
  myServo.attach(servoPin);
  myServo.write(97);
}

void ApolloCounterClockWise()
{
  myServo.attach(servoPin);
  myServo.write(112);
}

void ApolloStop()
{
  myServo.detach();
}
//-----------------------------------------------------------

void setup()
{
  //set pin mode to input
  pinMode(LDR, INPUT);
  Serial.begin(9600);
  //set motor speeds
  centralMotor.setSpeed(40);
  artMotor.setSpeed(40);
}



void loop()
{
  //turn acrylic clockwise all the time
  AcrylicClockWise();
  //stop at regular intervals
  AcrylicStop();

  //read the light into variable
  lightread = analogRead(LDR);
  //if light is alot then set apollo to spin and stop artemis
  if(lightread<700)
  {
    centralMotor.setSpeed(40);
    ArtemisStop();
    ApolloClockWise();
  }
  else
  {
    //else set artemis to go and apollo to stop
    centralMotor.setSpeed(40);
    ApolloStop();
    ArtemisStart();
  }
}

Step 17: Sewing the Curtain

Materials:
1 yd gold costume satin
gold thread
5 ft Greek ribbon

Tools:
sewing machine
hot glue

For the stage curtain we purchased one yard of gold costume satin at $4/yd. The curtain is actually made of two lengths of fabric wrapped around the front and back of the model base. The curtain has a basic hem on the bottom and a fairly simple ruching feature at the top. Each piece requires three lines of straight sewing.

To make the curtain, cut two lengths of fabric, each 1 yard long by 13 inches tall. Begin by folding one long edge of fabric 0.75 inch from the top so that it folds back on itself, non-shiny sides touching. Pin in place and hem the edge with about 0.5 inch seam allowance. (Make it so there is about 0.5 inch between the line you’re sewing and the fold of the fabric.) This should give you a 1 yard-long piece of fabric with a nice hem along the bottom.

Now, to make the ruching at the top for that “curtainy” effect you will have to sew two parallel lines along the remaining long edge. Fold the raw edge 1.5 inches from the top with non-shiny sides touching. Pin in place. Now, if you can make your stitch length a little longer than normal (>2 mm in length) then the next few steps will be easier. Hem the pinned edge with about a 1 inch seam allowance. Now, once you’ve taken your pins out, sew another line 0.25 inch below the one you just sewed. After you have your two lines, go to the end of the fabric and pull a few stitches of thread from each of the two lines. Hold the free thread ends in one hand and gently begin pushing/pulling the fabric down the the sewn-in thread, creating an “accordion” or ruching effect. Continue this down the length of the fabric until your length of gathered (ruched) fabric is 30 inches long.

Follow these same steps with your second piece of fabric. Once you have both pieces you can attach them to the stage. Line up the the ruching stitch lines on the non-shiny side of the curtain with the edge of the stage and use hot glue to secure it. Cut an appropriate length of your favorite Greek-inspired ribbon and hot glue it along the shiny-side ruching stitches.

Step 18: Time to Dance!

Plug your Arduino into a power source and watch your Greek god and goddess in action. Apollo should dance when the transparent acrylic is above the sensor (God of the Sun!) while Artemis should dance when the opaque acrylic is above the sensor (Goddess of the Moon). Grab a bowl of feta and some kalamata olives and enjoy watching your mythologically digital scene.

Instructables Design Competition

Participated in the
Instructables Design Competition