A fast "intervalometer"[]

Written for/on: S3, using CHDK v148
Also works on: A570IS
others unknown (probably all)

by Divalent. 9/30/2007


This "intervalometer" is not really an intervalometer per se, it's just a program that will allow you to execute the continual mode for acquiring images as fast as possible when your purpose is to generate a time lapse sequence to create a movie. For that purpose, you typically want the camera mounted on a tripod, and don't want to have to have your finger on the shutter button. Thus, you minimize movement of the camera.

This script allows you to start image acquisition with the touch of one button (specifically, one of the 4 directional buttons on the camera), and it will end either when a specified time expires, or if you hit another button on the camera.

The continual mode allows you collect images at the fastest possible rate, typically 2.4 fps (0.42 sec per image) under optimal conditions, whereas with an intervalometer script the best you can do is about 1.5 sec per image.

NOTE: when using this Script, you must first place the camera in continual mode (on an S3, you do that by hitting the timer button once, if it wasn't in that mode to begin with). On the A570, you do this by pressing the Func./Set button, then selecting drive mode (the little square). On the A570, continuous shooting is not available in full auto - you must set the camera to TV, M, AV, or P mode.

You will want to turn the flash off if you want fast photos, although this obviously comes with tradeoffs.

One tradeoff to note is that the continual mode does not re-adjust the exposure (or focus, if not using MF) prior to each shot. Instead, (and unlike the true intervalometer scripts) each image is acquired using whatever was determined to be appropriate for the first shot.

Also, this script might be useful for lightning shots. [See the Lightning script submitted by Keoeeit (now labeled superceded) for information on (among other things) disabling the dark frame subtraction.]

Documentation/Help There is none: if you want, cut and paste the above text and save it as a small "fast_intv.txt" file to your /CHDK/SCRIPTS/ folder.

Script Code (save as "fast_intv.bas" to your /CHDK/SCRIPTS/ folder)

rem  author Divalent
rem  camera: S3, CHDK v148, Operating in P mode
rem  Save this file as "fast_intv.bas" in the SCRIPTS directory
rem  This version uses the continuous mode in an S3 for taking consecutive
rem  images rem  as fast as the camera can shoot them (on my camera, 
rem  about 2.4 FPS, or ~420 msecs apart).
rem  NOTE: unlike a slower intervalometer script, there is NO refocussing
rem   nor any exposure readjustment between images.  What you get is what you
rem   start with.  2 secs is allowed before the start to focus and set
rem   the exposure.
rem  To use, you must set the camera into continuous mode.  This script will
rem  then just keep it shooting until any button is pressed on the camera or
rem  until the user specifed duration is up.
@title Fast Intervalometer
@param m duration of sequence (Min)
@default m 0
@param d duration of sequence (sec)
@default d 10
rem validate duration value
  if d<2 then d=2
rem now convert to msec (for waitclick timeout)
rem clear key queue
  wait_click 100
print "      "
print "      "
print "      "
print "Fast Intervalometer"
print "R U in Continual Mode?"
print "any ARROW key -> start"
print "      SET key -> ABORT"
  is_key k "left"
    if k=1 then goto "start_shooting"
  is_key k "right"
    if k=1 then goto "start_shooting"
  is_key k "up"
    if k=1 then goto "start_shooting"
  is_key k "down"
    if k=1 then goto "start_shooting"
  is_key k "set"
    if k=1 then goto "abort_script"
  goto "loopa"
rem first get camera to lock in focus and exposure
   press "shoot_half"
   sleep 500
   print "      "
   print "Shooting continually!!"
   print "    ****    "
   print "Hit ANY key to END"
   sleep 1500
   press "shoot_full"
   sleep 1000
   wait_click d
   release "shoot_full"
   sleep 100
   release "shoot_half"
rem is above needed?
   print "      "
   print "      "
   print "**** FINISHED ****"
   print "      "
   goto "prog_end"
   print "      "
   print "**** ABORTED ****"