Go Down

Topic: Timelapse with Arduino? (several days) (Read 2 times) previous topic - next topic

cave2596

Hello,

I want to make a timelapse Video of a growing Plant in the forest.
Therefore I wanted to hack a cheap (Foto-)Camera to control it with the Arduino.
All in all I would leave the whole stuff three days in the forest.

Has anybody experience with timelapse videos (and Arduino)?

Thank you for your answers!

Ps: I haven't workt with a microcontroller yet.

robtillaart

sounds like very doable:

point of attention is moisture, and do you want to make pictures in the dark? Flash?

What is the time between two photos you have in mind?

The "blink without delay" example gives you the framework of the code you need.
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

cave2596

I want to take pictures in the dark with a led-light.
I thought of a picture every 30min.
Maybe shorter.

robtillaart


Here some code to get started. It has 2 constants the PHOTOINTERVAL and PULSELENGTH.
PHOTOINTERVAL  is the time between snapshots.
PULSELENGTH is the time defining the length of the pulse for the camera.

You can test the sketch by connecting a LED to pin 7
Code: [Select]

unsigned long time = 0;
unsigned long lastpulse = 0;
unsigned long lastblink = 0;

#define PULSEPIN  7
#define PHOTOINTERVAL (30 * 60 * 1000UL)    // 30 minutes in milliseconds
#define PULSELENGTH 100UL                        // pulse for camera, in milliseconds, must be shorter than PHOTOINTERVAL

void setup()
{
  // serial is not really needed but always handy while tinkering :)
  Serial.begin(9600);
  Serial.println("Photo interval 0.1");

  pinMode(PULSEPIN, OUTPUT);
  pinMode(13, OUTPUT);                 // on board led for "alive" blink
}

void loop()
{
  time = millis();
  // time to start a new photo?
  if (time - lastpulse > PHOTOINTERVAL)
  {
    lastpulse = time;
    digitalWrite(PULSEPIN, HIGH);
  }
  if ((time - lastpulse >= PULSELENGTH) && (digitalRead(PULSEPIN) == HIGH))
  {
    digitalWrite(PULSEPIN, LOW);
  }

  // blink onboard led to show sketch is still alive
  if (time - lastblink > 1000)  // fixed interval
  {
    lastblink = time;
    digitalWrite(13, !digitalRead(13));
  }
}
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

cave2596

Thank you for the code!

In a few days I'll get my own Arduino.
Then I'll look for your code and test it.

Go Up