Time Lapse Utility for Kodak DC3400 Digital Camera

by Todd Ferrante <back to homepage>

Summary: DC3400TimeLapse allows a user to take time lapse pictures with the Kodak DC3400 digital camera.  The timing parameters are user settable, either through prompts or through command line parameters.  If desired, the user can change the camera settings (like focus mode, zoom, flash, etc.) with the Camera Controls software before starting the time lapse sequence.  The script will exit either after a specified number of pictures or when the mouse cursor is kept in the upper left corner of the screen.

Background: I recently purchased a Kodak DC3400 Digital Camera.  While the pictures it takes are great, the Kodak supplied control software left a little to be desired.  I was used to working with webcam and video capture card software, and had formed some expectations of computer controlled cameras.  The Kodak software allows the user to set any camera settings easily, but it doesn't allow easy transfer of images from the camera to the hard disk.  You can take a picture with the Kodak software.  You can delete the picture with the Kodak software.  But, to transfer images from the camera, you have to drag and drop the images in Windows Explorer.  In addition, the Kodak software lacks any provision for automating picture taking with the camera.  To me, one of the big benefits of having a camera connected to the computer is being able to program it to take time lapse photos.  These photos can be used for home security, web cams, artistic stuff, whatever.

Kodak does have a Software Developers Kit that a programmer can use to write custom applications in visual basic ot C++.  I downloaded this, but didn't fell like investing the time to learn C++.  Soon after, I stumbled onto AutoIt, a freeware scripting program that can automate keystrokes and mouse commands in Windows.  I used a freeware AutoIt Script Writer to create AutoIt scripts to control the camera and download pictures in my hard disk.

Preparation:
Install the Kodak DC3400 software that came with your camera.
Download AutoIt from the AutoIt homepage and install it.
If you want to edit the AutoIt scripts, download and install the Script Writer software.

There are two changes you have to make to your Windows configuration.
First you have to add the camera picture directory to the bottom of the list of favorates in Windows Explorer.

Second, add the directory where you will save your time lapse pictures to the right mouse click context menu option "Send To...".  I'll describe how to do this in Windows 98, which I'm using.  If you're using another Windows version, surf the web for instructions for your version. Download whichever of the following AutoIt scripts you find useful.  TakePicture.aut and DownloadAndDeleteFromCamera.aut are the basic routines that are the heart of the more complex scripts. Using DC3400 Time Lapse:
It is best if there are no pictures stored on the camera before Time Lapse is run.

DC3400TimeLapse can be run a couple different ways.  The first is to simply doubleclick on the .aut script file.  The program will start and prompt the user for the following parameters:

Card time:  This is the time it takes the camera to take a picture, save it to the memory card and tell the computer the camera is done.  This time will vary depending on the resolution and quality of the pictures you take, as well as if you are using the regular serial or USB port for camera communication.  I use the larger picture size, medium picture quality and USB port.  A camera setting of 25 seconds works for me.  You will need to experiment to find how short this time can be on your system and settings.  Be sure to test this on the first picture the camera takes after power-up so as to include the lens extension time.  Start high and shorten the time gradually.  If you pick a card time setting that is too short, the script may hang.
Time lapse:  The time in seconds between the pictures in your time lapse sequence.  The script watches the computer's clock and takes the picture when the proper number of seconds have passed since the last picture was taken.  The minimum time lapse between pictures will depend on the Card time setting and how fast your computer transfers the picture from the camera and deletes it from the camera.  If the Time lapse value is greater than the picture taking cycle, the software will pause and give a countdown until the next picture.  If the picture taking cycle takes longer than the desired Time lapse value, there will be no pause, and the next picture will be taken immediately.
Number of Pictures:  When this number of pictures is reached, the script will close the Camera Control and Explorer windows and exit.  If this parameter is set to zero, the software will loop infinitely.  In either case, if the mouse is moved so the cursor is in the upper left corner of the screen either when the last picture is deleted, or during the countdown between pictures, the software will exit.
Setup flag:  If set to zero, the picture taking cycle begins using the default camera settings.  If set to one, the user can change the camera settings (like focus mode, zoom, flash, etc.) with the Camera Controls software before starting the time lapse sequence.  When changing settings, be sure to apply them to the camera before taking a test picture, and be sure to delete the test picture after taking it.

The program can also get the parameter values by specifying them from a command line.  One way to do this is by creating a shortcut to AutoIt.  The shortcut line would have the format:

"<AutoIt directory>\AutoIt.exe"  C:\<script directory>\DC3400TimeLapse.aut /C <CardTime> /L <Lapse> /P <Pictures> /S <SetupFlag>

The first part of the shortcut, the part that calls AutoIt, must be within double quotation marks.  The parameters must be in alphabetical order and must all be present.  Here is an example of my shortcut.  It set the card time to 25 seconds, the time between pictures to 45 seconds, the number of pictures to 3 and lets me adjust the camera settings before starting to take pictures.

"C:\Program Files\AutoIt\AutoIt.exe"  C:\todd\AutoItScripts\DC3400TimeLapse.aut /C 25 /L 45 /P 3 /S 1