CHDK/uBASIC/Scripts: Zoom Series

Zoom_Series

 * Written for/on: A610/A620 (CHDK build 136)
 * Also works on: A630/A640(cams with 35-140mm lens)(9 zoom steps)(0 thru 8)

Features:

-- enables user to choose / omit specific focal lengths to be included in the series. (Stored as param values, the selections are retained thru power off/on cycles, unless/until a different script is loaded.)

-- user can elect to use a startup delay (a missing convenience, errrm necessity, the absence of which motivated me to draft this script). Also, seconds and minutes can be entered separately (instead of having to scroll to 300s to set 5min delay, which would be the case if a single input param for seconds was available)

Usage notes:

The scenario I initially had in mind for this script was "scenic / self-portraits while hiking". It's useful in various other scenarios, like on-location group photos (family trip to the zoo, etc)

Before the start delay countdown, the script autozooms and prompts user to frame the subject area while viewing at full tele (for composition precision). Note: "subject area" isn't necessarily same as subject. If the series will be a self portrait, during setup you will frame the shot to achieve focus at the area (or at a distance equal to) where you will be situated during the shoot.

Documentation/Help (save as a small zoom_series.txt" file to your /CHDK/SCRIPTS/ folder)

Refer to the above "features + usage notes" and paste the text into a helpfile, if you wish.

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

@title Zoom Series rem for A610/A620 (cams with 35-140mm lens)(9 zoom steps)(0 thru 8) rem should also work with A630/A640

rem omitting some focal length choices rem because only *TEN* params are available @param a incl 35mm (1=yes) @default a 1 @param b incl 45mm (1=yes) @default b 0 @param c incl 51mm (1=yes) @default c 1 @param d incl 60mm (1=yes) @default d 1 @param e incl 71mm (1=yes) @default e 1 @param f incl 83mm (1=yes) @default f 0 @param g incl 104mm (1=yes) @default g 1 @param h incl 140mm (1=yes) @default h 1 let z=a+b+c+d+e+f+g+h rem this sanity check not foolproof but... if z<1 | z>8 then gosub "nothing"

@param i Start delay (sec) @default i 5 @param j Start delay (min) @default j 0

rem Change code so that "show helptext" is optional rem if/when CHDK permits additional params. gosub "instruct"

if w>0 then gosub "countdown"

if h=1 then shoot if g=1 then set_zoom 7 if g=1 then shoot if f=1 then set_zoom 6 if f=1 then shoot if e=1 then set_zoom 5 if e=1 then shoot if d=1 then set_zoom 4 if d=1 then shoot if c=1 then set_zoom 3 if c=1 then shoot if b=1 then set_zoom 2 if b=1 then shoot rem if a=1 then set_zoom 0 rem Instead of above, let's unconditionally SET_ZOOM 0 rem so cam is at full-wide state when script ends. set_zoom 0 if a=1 then shoot print "***finished***" print "." end


 * instruct

rem This scripts works with flash on or off. rem Only 2 known preconditions/requirements: rem -- cam cannot be set to manual focus rem -- Menu } Review should not be set to "HOLD" rem print "1 shot at each selected" print "focal length" print "." print "tripod use OPTIONAL" print "paused --[ click SET ]--" wait_click set_zoom 8 print "begins at full zoom" let w=j*60+i print "(after",w;"s start delay)" print "." print "Frame your subject area" print "& click [SET] when ready" wait_click rem blank lines scroll away previous helptext print " " print " " print " " print " " print " " return


 * nothing

print "0 focal lengths chosen" print "nothing to do !" return


 * countdown

rem May want to force minimum 2sec start delay here rem to eliminate camera shake from button press. rem (I decided it is not needed in the zoom_series script) rem if w<2 then let w=2 for n=1 to w let m=w-n+1 print "countdown:", m,"secs" sleep 940 next n rem NOTE: Loop timer, above, has been checked for accuracy rem blank lines scroll away countdown text print " " print " " print " " print " " print " " return

--24.3.2.218