OK, I finished yet another Intervaometer script. This one offers quite a few options. Due to use of "get_prop 206" and "get_tick_count", timing should be relatively accurate. See timing test info below. It is written to run on DigicIII cameras. If you search and replace all occurences of "206" with "205," it should work fine on DigicII.
Mode: The script offers 3 ways to determine your number of shots.
# lets you enter the total number of shots you want and the interval between them.
Infinite continues to shoot until memory or battery runs out at the specified interval.
Time calculates the number of shots and interval based on your desired frame rate, desired video legth and the original timespan. See notes on time mode below.
Number of Pics: In # mode, this is the total number of pictures you want taken.
Interval: This is the time, in minutes and seconds, you want between each shot in # mode and infinite mode.
Initial Delay: The time in seconds you want the camera to wait before starting the sequence.
Lock Focus: When on, all shots will use focus and exposure that will be locked in on first shot. When off, the camera will set focus and exposure before each shot.
Original: Timespan, in hours and minutes, that you would like to capture images of. Only used in time mode.
Target: Time, in minutes and seconds, that you would like the end video to be. Only used in time mode.
FPS: Framerate (frames per second) you would like end video to be. Only used in time mode.
Log: If on, info about the sequence will be written to PR_SCREEN.txt in your scripts directory. Info includes time of day at which sequence starts, the total number of pictures to be taken, the total time the script is expected to run, and the interval between shots. Log is especially useful in time mode, as you may not know the interal and number of shots ahead of time.
About time mode: This script deals only with whole seconds. Intervals will be rounded down to the nearest whole number. For example, if you enter time parameters that would call for a 1.33 second interval, the actual interval used will be 1 second. The script has been designed to compensate for this - if you ask for it to shoot for an hour, it will shoot for 1 1/12 hours, producing 3600 shots at 1 second intervals instead of 2700 shots at 1.33 second intervals. If this isn't satisfactory, check out
Time Bandit. Time bandit is an intervalometer that works similar to time mode, but will shoot at intervals with fractions of seconds if needed.
rem based on 'Interval' by Johan Van Barel
rem Massively Modified by A_Str8
@title FlexInterval
@param a Number of Pics
@default a 10
@param b Interval (Min)
@default b 0
@param c - (Sec)
@default c 20
@param d Initial Delay (Sec)
@default d 1
@param e Mode(0=#,1=infinite,2=time)
@default e 0
@param f Lock Focus (0=no, 1=yes)
@default f 0
@param g Original (Hours)
@default g 4
@param h - (Min)
@default h 0
@param i Target (Min)
@default i 0
@param j - (Sec)
@default j 30
@param k FPS
@default k 24
@param l Log (0=no, 1=yes)
@default l 0
if e=2 then gosub "math"
if a<2 then let a=2
if b<0 then let b=0
if c<0 then let c=0
if d<0 then let d=0
if f<>1 then f=0
t=b*60000+c*1000
d=d*1000
s=2
if l=1 then print_screen 10
T=get_day_seconds
T=T/60
H=T/60
print T/60":"T%60, " - New interval set"
if e<>1 then print " Pics:"; a
if e<>1 then print " Tot. Time:", t*(a-1)/60000; " Min", t*(a-1)%60000/1000; " Sec"
if e=1 then print " Unlimited pics . . ."
print " Interval: "b " Min "c " Sec"
print "------------"
if l=1 then print_screen 0
if f=1 then gosub "lock_focus"
if d>Z then M=d-Z else M=0
sleep M
if e<>1 then print "Pic 1 of", a
if e=1 then print "Pic 1"
if f=1 then gosub "quick_shoot" else gosub "focus_shoot"
if e=1 then goto "endless" else gosub "norm_loop"
print "Exiting . . ."
sleep 1000
end
rem Focus. Record elapsed time in 'Z'
:focus
X=get_tick_count
press "shoot_half"
do
get_prop 206 P
until P=1
Y=get_tick_count
Z=Y-X
return
rem Lock focus. Record elapsed time in 'Z'
:lock_focus
gosub "focus"
click "down"
sleep 250
click "erase"
sleep 250
release "shoot_half"
Y=get_tick_count
Z=Y-X
return
rem Focus, then shoot. Record time elapsed in "Z"
:focus_shoot
gosub "focus"
W=Z
gosub "quick_shoot"
Z=W+Z
return
rem Shoot without focusing. Record time elapsed in "Z"
:quick_shoot
X=get_tick_count
click "shoot_full"
do
get_prop 206 P
until P<>1
Y=get_tick_count
Z=Y-X
return
rem Take preset number of shots
:norm_loop
for s=2 to a
print "Wait",b;"Min",c;"Sec"
if t>Z then M=t-Z else M=0
sleep M
print "Pic", s, "of", a
if f=1 then gosub "quick_shoot" else gosub "focus_shoot"
next s
return
rem Take unlimited number of shots
:endless
print "Wait",b;"Min",c;"Sec"
if t>Z then M=t-Z else M=0
sleep M
print "Pic", s
if f=1 then gosub "quick_shoot" else gosub "focus_shoot"
s=s+1
goto "endless"
rem Calculate correct interval and number of shots based on desired framerate, original time, and
target time.
rem Please note this calculation is not accurate because intervals are always rounded down to the
nearest second.
:math
A=g*3600+h*60
D=i*60+j
B=D*k
C=A/B
if C<1 then C=1
b=C/60
c=C%60
a=k*D
if a*C>=A then return
a=A/C
return
To test of the timing of my interval script, I aimed my camera at a clock that shows seconds and ran the script. At 10 second intervals, the script seems to lose around one second every third shot.
Script settings
Focus Lock: On
Interval: 10 seconds
Camera Settings
Camera: Canon A720
Shutter Speed: 1/2 second