Introduction: Very Easy and Simple Timelapse Controller for Canon Eos Dslrs With Arduino

About: I am an award winning photographer. I also like cooking and riding motobikes.

You need:
Arduino (I use freetronics leostick)
3v relay
a remote plug for your camera
a 4x AA battery pack
switches/buttons (optional)
3 position switch for version 2

Step 1: Connect the Battery and Relay

Connect the battery pack negative terminal to the GND pin on the arduino, and the positive to the +5V pin.
Now connect the coil pins of the relay to the GND and digital 6 pins on the arduino.
Connect the plug for the camera to the relay as shown in the diagram. Make it so without power to the relay, the remote circuit is broken.

Step 2: Upload the Code!

Upload this code to take a photo every 3 seconds.
change the frame interval on the first line for different settings.

int frameInterval = 3; // Delay between pictures (in seconds)
int shutterPin = 6; // Reed relay on digital pin 6
int ledPin = 13; // LED connected to digital pin 13

void setup()

  pinMode(shutterPin, OUTPUT); // Set the shutter pin as an output
  digitalWrite(shutterPin, LOW);
  pinMode(ledPin, OUTPUT); // Set the LED pin as an output
  digitalWrite(ledPin, LOW);

void loop()
  digitalWrite(ledPin, HIGH); // Turn on activity LED
  digitalWrite(shutterPin, HIGH); // Turn on shutter relay
  delay(500); // Hold the button for 1/2 second
  digitalWrite(ledPin, LOW); // Turn off activity LED
  digitalWrite(shutterPin, LOW); // Turn off shutter relay
  delay(1000 * frameInterval); // Wait the required interval before repeating

Now it should trigger the relay and camera every 3 seconds. The relay should be on for half a second and turn off, wait three seconds and turn on, it will do this until the battery runs out.

I will post a sample video on my youtube channel and my website

Step 3: Put It in a Box

Put it in any box you want.


1) put the batteries in the holder
2) Wait for the arduino to boot up
3) listen for the relay, hear if it clicks at the desired interval
4) lock the exposure on the camera
5) plug into the camera
6) let is go for as long as you want.
7) use your favorite program to put the stills into a video.

Check out a youtube video I have done with this

Step 5: UPDATE -------Version 2

Connect everything to the board as normal but add a 3 position switch to change the time from 2 seconds to 5 seconds.
Centre pin to ground and the two side pins to D3 and D2
Use this code, done by Thenerdling.

int relay = 6;
void setup(){
  pinMode(relay, OUTPUT);
  digitalWrite(3, HIGH);    // turn the LED off by making the voltage LOW
  digitalWrite(2, HIGH);    // turn the LED off by making the voltage LOW
void loop(){
  if (digitalRead(2) == LOW) // is the button pressed?
    digitalWrite(relay, LOW);
    digitalWrite(relay, HIGH);

  if (digitalRead(3) == LOW)
    digitalWrite(relay, LOW);
    digitalWrite(relay, HIGH);


Arduino Contest

Participated in the
Arduino Contest