Time-Lapse Photography




About: My name is Randy and I am a Community Manager in these here parts. In a previous life I had founded and run the Instructables Design Studio (RIP) @ Autodesk's Pier 9 Technology Center. I'm also the author ...

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.



  • Arduino Contest 2019

    Arduino Contest 2019
  • Tape Contest

    Tape Contest
  • Trash to Treasure

    Trash to Treasure

87 Discussions


8 years ago on Step 9

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

2 replies

Reply 8 years ago on Step 9

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


7 years ago on Introduction

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 :-)

4 replies

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!

Robot Lover

7 years ago on Introduction

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.

2 replies

He wanted to isolate the 'duino 5V from the camera 3V. A simple FET would do the job, or a optoisolator for isolation. Or just a diode across the relay coil.

Second thing I'd do is put in a focusing switch which clicked on the auto focus a couple seconds before clicking the shutter.

Third thing is use really fine wire going into the camera, like wire wrap wire.

Fourth thing is turn on the camera power with another timer. You can use a P channel FET for that, witching the camera 3V.


Using a NPN transistor would isolate it from the camera's 3 volt line. I just think that using a relay or optoisolator is a bit overkill.


7 years ago on Step 9

Wouldn't the relay just spit dangerous voltage back into the arduino's pins when it releases the switch? I think you might want to put a diode between the relay's pin or just use a transistor with it.


8 years ago on Introduction

I followed your instructable but I don't think it's stable. For some reason when I set the picture delay more than 30000 it's acts sketchy. Even if it does work eventually will not stay sync. Can you tell me whats going on here?

3 replies

Reply 8 years ago on Introduction

What do you mean by acts sketchy or won't stay sync?

There should be no problem with setting it over 30 seconds, as far as I know.

If the delay is too long for some reason, you could try making a for loop that delays the chip for 1000 milliseconds at a time and then have that repeat for as many seconds as you need it to wait between pictures.


Reply 8 years ago on Introduction

Maybe there's something wrong with my arduino. At first when I set to 75 seconds it worked for maybe 10 or more minutes then for some reason would end up eventually triggering every 10 seconds.


Reply 7 years ago on Introduction

I'm new to arduino (3 days...), and i realise you posted a year ago, but i understand intergers (as in "int stupidvar") can only go up to 34000 ish. After that use the long command so "long stupider = 60000;" will delay 1 minute. long can go up to 2.5 million or billion or some other much larger number.


8 years ago on Step 10

Nice ible but I would like to be able to leave a time lapse camera out in the open, maybe for 2 month or more, and only check on in on it like once every 3 days. Anybody know of plans that have an all-wether enclosure, and a power wake up feature? I have an arduino uno, and I'm comfortable with the programming, but why is the relay necessary? Can't the Arduino close the circuit on it's own? It's not like it's driving a motor. It's just sending a fairly long pulse, no?

1 reply

Reply 8 years ago on Step 10

The easiest thing to do would be to find a clear waterproof case and stick it in and not fuss with custom building something.

The Arduino I'm using is operating at 5V and the camera at 3V. I didn't want to fuss around with joining the circuits.