--[[@title Weston Meterrem Author: daviesjpuk@gmail.comrem Version : 1.0rem Description : Turns your CHDK camera into a spot or centre weighted meter. Tested on SD800 IS.@param a Film Speed@default a 16@param b Shutter Speed@default b 13@param c Mode Centre/Spot@default c 0@param d Meter Adjustment@default d 0--]]-- standard ISO speeds - see [url=http://en.wikipedia.org/wiki/Film_speed#Film_speed_systems]Wikimedia Error[/url]FilmSpeed = {6, 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, 80, 100,125,160,200,250,320,400,500,640,800,1000,1250,1600,2000,2500,3000,3200,4000,5000,6400,12800,25600,51200,102400}-- film SV [url=http://johnlind.tripod.com/science/scienceexposure.html]Photographic Science: Exposure[/url]sv96= {90,130,161,186,226,257,288,322,353,384,418,449,480,511,545,576,607,641,672,703,737,768,798, 830, 864, 895, 925, 951, 960, 991, 1022,1056,1152, 1248, 1344, 1440}ShutterSpeed = {"1/16000","1/8000 ","1/4000 ","1/2000 ","1/1000 ","1/500 ","1/250 ","1/125 ","1/60 ","1/30 ","1/15 ","1/8 ","1/4 ","1/2 ","1s ","2s ","4s ", "8s ", "15s ","30s ","1m ","2m ","4m ","6m "}tv96 = {1341, 1245, 1149, 1053, 957, 861, 765, 669, 567, 471, 375, 288, 192, 96, 0, -96,-192,-288,-375,-471,-567,-663, -759, -855}-- Fno96= {0,51,93,147,192,243,285,331,384,435,477,527,576,624,664,710,768,816,856}maxav96={-18,30,76,125,174,222,268,313,363,414,460,507,556,605,648,692,745,797,840,884} Fno= {"LOW ","f1 ","f1.2 ","f1.4","f1.7","f2 ","f2.4","f2.8","f3.3","f4 ","f4.8","f5.6","f6.7","f8 ","f9.5","f11 ","f13 ","f16 ","f19 ","f22 ","OVER"}props=require("propcase")Settings = {}function Mode () if c<1 then-- minimal zoom, centre weighted set_zoom(1) set_prop(props.METERING_MODE,2) else-- maximum zoom, point meter set_zoom(get_zoom_steps()) set_prop(props.METERING_MODE,1) endendfunction MeterScene() press ("shoot_half") sleep (1500) release ("shoot_half")endfunction SettingsSave ()-- Settings[1]=get_nd_filter() Settings[2]=get_prop(props.FOCUS_MODE) Settings[3]=get_prop(props.METERING_MODE)--- Settings[4]=get_prop(props.WB_ADJ) returnendfunction SettingsRestore ()-- set_nd_filter(Settings[1]) set_prop(props.FOCUS_MODE,Settings[2]) set_prop(props.METERING_MODE,Settings[3])-- set_prop(props.WB_ADJ,Settings[4]) returnendfunction SettingsMetering ()-- nd filter OUT, Focus manual (so it doesnt hunt)-- set_nd_filter(2) set_prop(props.FOCUS_MODE,4) returnendfunction FnoLookup(Reading) for i=1,table.getn(maxav96),1 do if Reading<maxav96[i] then return i end end return table.getn(Fno) -- didn't find one - use the biggestendfunction Results () local av96-- av+tv=bv+sv av96=get_bv96()+d+sv96[a]-tv96[b] if c==0 then MODE="CENTRE" else MODE="SPOT " end print (string.format("ISO %6d Mode %s",FilmSpeed[a],MODE)) print (string.format(" %s %s",ShutterSpeed[b],Fno[FnoLookup(av96)])) print ("[DISP.] help [MENU] end") returnendfunction help () --- 1234567890123456789012345 cls () print ("Film ISO [Up][Down]") print ("Shutter [<][>]") print ("Spot/Centre [Zoom]") print ("Meter [SET]") print ("End [MENU]") wait_click ()endSettingsSave()SettingsMetering()Mode ()MeterScene()repeat cls() Results() wait_click () if is_key("set") then MeterScene() elseif is_key("down") then if a>1 then a=a-1 end elseif is_key("up") then if a<table.getn(FilmSpeed) then a=a+1 end elseif is_key("left") then if b>1 then b=b-1 end elseif is_key("right") then if b<table.getn(ShutterSpeed) then b=b+1 end elseif is_key("zoom_in") then if c ~= 1 then c=1 Mode() MeterScene() end elseif is_key("zoom_out") then if c~= 0 then c=0 Mode() MeterScene() end elseif is_key("display") or is_key("print") then help() enduntil is_key("menu")SettingsRestore()press ("print")
Started by Daniel Moore Feature Requests
Started by lglass DSLR Hack development
Started by fudgey General Help and Assistance on using CHDK stable releases
Started by pigeonhill Feature Requests
Started by schnellerstefan Script Writing