watch 01:25
Jurassic World: Dominion Dominates Fandom Wikis - The Loop
Do you like this video?
Play Sound
This script was written to demonstrate and test the various methods known to extend battery life when using an intervalometer (time lapse) script. These are :
- Lock the autofocus.
- Turn the backlight off.
- Turn the display off (on camera that supports that - typically models with an OVF)\
- Switch to playback mode between shots.
- Enter sleep mode between shots (on cameras with a "short cut" button)
Testing indicates that the using the first two methods will extend battery life about 20%. The other three methods can double or even quadruple battery life.
Discussion thread for this script is here : Battery Intervalometer . Save it with .lua file extension - something like miser2.lua
--[[
@title Battery Miser 6.1
@param s Interval (sec)
@default s 60
@param b Turn Backlight Off
@default b 0
@range b 0 1
@param d Turn Display Off
@default d 0
@range d 0 1
@param p Wait in Playback Mode
@default p 0
@range p 0 1
@param k Use shortcut key to sleep
@default k 0
@range k 0 1
@param a Enable AF Lock
@default a 0
@range a 0 1
@param l Log to File
@default l 1
@range l 0 1
@param r Lens Retract Delay (sec)
@default r 60
@param v Batttery Stop Voltage (mV)
@default v 1000
@range v 0 10000
--]]
props=require("propcase")
shortcut_key="print" -- edit this if using shortcut key to enter sleep mode
sleep_mode=false
function restore()
set_backlight(1)
set_aflock(0)
sleep_disable()
end
function sleep_enable()
if( sleep_mode==false) then
print("enter sleep mode via shortcut")
press(shortcut_key)
sleep(2000)
release(shortcut_key)
sleep_mode=true
end
end
function sleep_disable()
if( sleep_mode==true) then
print("exit sleep mode via shortcut")
press(shortcut_key)
sleep(2000)
release(shortcut_key)
sleep_mode=false
end
end
function log_to_file( string )
if ( l == 1 ) then
print_screen(-10)
print(string)
print_screen(false)
else
print(string)
end
end
function switch_mode( m ) -- change between shooting and playback mode
if ( m == 1 ) then
if ( get_mode() == false ) then
print("switching to record mode")
set_record(1)
while ( get_mode() == false ) do
sleep(100)
end
end
else
if ( get_mode() == true ) then
print("switching to playback mode")
set_record(0)
while ( get_mode() == true ) do
sleep(100)
end
end
end
end
function display_off() -- turn off display by pressing DISP button
print("blanking display")
count=5
disp_save = get_prop(props.DISPLAY_MODE)
repeat
disp = get_prop(props.DISPLAY_MODE)
if ( disp ~= 2 ) then
click("display")
sleep(500)
end
count=count-1
until ((disp==2) or (count==0))
if ( count>0 ) then
print("display blanked")
else
print("unable to blank the display")
end
end
set_console_layout(0,0,45,12)
if ( l==1 ) then
print_screen(-10)
print(" ")
print("============================================")
print(os.date("%d.%m.%y %X"))
print("interval=",s,"retract=",r,"AFL=",a)
print("backlight=",b,"playback_idle=",p)
print("display off=",d, "vbatt cutout=", v)
print("sleep mode=",k,"logging=",d)
print("============================================")
print_screen(false)
end
sleep(2000)
shotcount=0
interval=s*1000
retract=r*1000
b=1-b
switch_mode(1)
if( a == 1 ) then -- focus lock ?
press( "shoot_half" )
while ( get_shooting() == true ) do
sleep(100)
end
release("shoot_half")
set_aflock(1)
print( "--focus locked")
sleep(500)
end
if ( d==1 ) then -- turn display off ?
if( p==1 ) then
print("**Warning: Wait in Playback mode")
print("**conflicts with Display Off mode.")
print("**Disabling Playback Idle mode")
sleep(2000)
p=0
end
display_off()
sleep(5000)
end
battery = get_vbatt()
nextshot=get_tick_count()
start=nextshot
abort = false
-- intervalometer loop starts here
repeat
switch_mode(1)
print("short wait =", (nextshot-get_tick_count())/1000 )
while (nextshot > get_tick_count()) do
set_backlight(b)
sleep(500)
end
shotcount = shotcount + 1
tic = get_tick_count()-start
nextshot = nextshot + interval
lens_retract = get_tick_count() + retract
log_to_file(string.format("shot:%d %2.2d:%2.2d %d.%2.2dV", shotcount, tic/3600000, (tic%3600000)/60000, battery/1000, (battery%1000)/10))
if (k==1) then sleep_disable() end
shoot()
sleep(200)
if( p==1) then switch_mode(0) end
if (k==1) then sleep_enable() end
print( "next shot wait ..", (nextshot-get_tick_count())/1000 )
repeat
if( (p==1) and (lens_retract < (get_tick_count()+2000) )) then
switch_mode(1)
switch_mode(0)
lens_retract = get_tick_count() + retract
end
set_backlight(b)
battery = (get_vbatt() + (battery*15)) / 16
if ( battery < v ) then abort=true end
if ( is_pressed("menu")) then abort=true end
sleep(100)
until ((nextshot < (get_tick_count()+3000) ) or abort)
until ( abort )
-- all done - user abort or battery below limit
if( battery < v ) then
log_to_file("battery limit reached")
else
log_to_file("user abort")
end
if ( d==1 ) then
print("unblanking display")
count=5
repeat
disp = get_prop(props.DISPLAY_MODE)
if ( disp ~= disp_save) then
click("display")
sleep(500)
end
count=count-1
until ((disp==disp_save) or (count==0))
end
restore()