Time-Lapse Photography





Introduction: Time-Lapse Photography

Hacking an old digital camera to take time-lapse picture sequences is fun and easy. All you need is some basic electronics skills and a little bit of patience.

I am using an Arduino (Atmel168 development board) as the time-lapse controller, but you can use any micro controller.

This was originally made for Day 5 of Thing A Day.

Step 1: Go Get Stuff.

You will need:

1 - digital camera
1 - small 2-pin socket
1 - 5V relay
1 - Arduino (or other micro controller)

Step 2: Open the Case.

Carefully open the case. Be sure not to break or unplug anything.

Step 3: Press My Buttons

Locate the button you press to take a picture. Notice the little metal tabs to each side of it. Begin connecting these tabs with a short piece of wire until you take a picture.

Step 4: Socket to Me.

Once you determine which two pins will take a picture when connected, connect a wire to each pin. Then connect these two wires to your socket. It is important to leave enough wire so that your socket can reach to the edge of the case.

Make sure when placing your socket that you have enough room for both the case to close and to rip a hole in the side of the case to poke the socket through.

Step 5: I'm Sticking With You

Carefully glue the socket in place. Make sure not to glue down anything that should not be. Also, don't get glue in the socket.

Step 6: Close the Case.

Yes, close the case. If you have done everything right it should close and you should still be able to get to your socket to plug wires into them.

Step 7: Relay

Take your relay and solder wires to each pin. The color doesn't matter too much.

Step 8: Plug and Play

Now is the time to plug it all in.

Plug the relay coil pins to Pin 7 of the Arduino and ground on the Arduino. The relay coil pins are the two pins that aren't towards the ends of the tube.

The two pins towards the end of the long tube go into the socket pins in the camera. It does not matter which wire goes in which socket pin.

Step 9: Programming

Now is time to program the Arduino and test your setup.

Follows is my code:

/* Time-Lapse Camera Controller
  • ------------------
  • Hits a camera shutter at a set interval
  • for time-lapse photography. The rate of the
  • delay can be manipulated for unique effects.

int camPin = 7; // sets the camera shutter pin
int stupidvar = 30000; // sets the delay between pictures

void setup()
pinMode(camPin, OUTPUT); // defines pin as an output

void loop()
digitalWrite(camPin, HIGH); // presses the button
delay(5000); // waits
digitalWrite(camPin, LOW); // release the button
delay(stupidvar); // delay between pictures

// stupidvar = stupidvar + 1000 // increments delay by one second for unique effect.


Step 10: Try It Out

Take a couple of pictures in sequence and see that it works.



  • Science of Cooking

    Science of Cooking
  • Pocket-Sized Contest

    Pocket-Sized Contest
  • Paper Contest 2018

    Paper Contest 2018

We have a be nice policy.
Please be positive and constructive.




So how's it work? Turn the Arduino on, Turn the camera on and it just starts snapping pictures like mad?

Pretty much, the Arduino just keeps running at whatever interval you set. Simply connect them together and turn them both on.

So, do you need the 5V relay?

I'm sure someone else has said this, but I don't want to go through 86 comments:

Program your arduino to send out a signal to your camera every x minutes through its Ir remote

there is a tutorial on adafruit on how to find the signal


If you didn't want to modify your camera, couldn't you put a servo into +5V, Ground, and one of the PWM-supporting digital pins and then have the servo push the button? I am hoping to pick up an Arduino Duemilanove at the Maker Faire this upcoming weekend and want to try this without sacrificing an innocent camera :-)

I know it has been almost 3 years, but I have indeed done that. No need to reverse the voltage on the servo, just send it back to its starting position with the right pulse.
I tested everything with a nano and then just put the program in an Attiny85 with a potentiometer to set the interval

You should be able to trigger it with a servo how you described. However, you would have to reverse the motor polarity for it to let go of the button and the response to do this will be relatively slow. Stop by the Instructables booth!

Thanks! Will do! One more question: is it critical to "press" the button for 5 seconds, like your program shows? Could it be for less time, say 500ms? Thanks again!

500 ms might be a bit short. I forget what the exact timing is on my camera, but you can get an idea of what will work for your camera by pressing down the trigger and counting until it takes a picture.

If it's a Canon camera, check this out:

It would be much easier and cheaper to use a transistor. That way you can take more pictures faster and don't have to worry about a dangerous voltage transient.