CHDK Wiki
No edit summary
No edit summary
Line 1: Line 1:
 
:'''Written for/on:''' Powershot S5 IS
 
:'''Written for/on:''' Powershot S5 IS
:'''Also works on:''' Edit me.
+
:'''Also works on:''' A590 so far (Edit me).
 
:'''Does'nt works on:''' A720 IS and some others
 
:'''Does'nt works on:''' A720 IS and some others
   

Revision as of 06:31, 23 November 2008

Written for/on: Powershot S5 IS
Also works on: A590 so far (Edit me).
Does'nt works on: A720 IS and some others

This is basically a very fast and responsive motion detection script. This will definitely solve your problems if you want to catch lightning (thus the title) or anything fast, however some objects will blur when the light conditions are insufficient. Enjoy this script!

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

  rem Author: fudgey - based on BarneyFive's MD Lightning6 and MLuna's Motion Detect scripts
  rem Tested on A570IS, Allbest build 16
  rem For bursts, set the camera in continuous shooting mode and set j>0
  rem If j>0 in single shot mode, you will see your shot for j seconds on screen.
  @title Fast MD with Burst/Preview 080205
  @param a Columns
  @default a 6
  @param b Rows
  @default b 4
  @param c Threshold (0-255)
  @default c 10
  @param d Compare Interval (ms)
  @default d 1
  @param e Trigger Delay (0.1 sec)
  @default e 42
  @param f Rows to Exclude
  @default f 0
  @param g Pix-Step(speed/accuracy adj)
  @default g 8
  @param h Reg Mode(0-no,1-incl,2-excl)
  @default h 0
  @param i Measure Mode (1-Y,0-U,2-V)
  @default i 1
  @param j Burst/Preview (sec,0=off)
  @default j 0
  if a<1 then a=1
  if b<1 then b=1
  if c<0 then c=0
  if g<1 then g=1
  if f<1 then f=1
  if j<0 then j=0
  e=e*100
  j=j*1000
  print ">[";a;",";b;"] threshold: ";c
  x=30000
  if j>0 then goto "md_burst"
  :md_singleshot
  press "shoot_half"
  t=0
  do
  md_detect_motion a, b, i, x, d, c, 1, t, h, 1, 1, a, f, 0, g, e
  until t>0
  click "shoot_full"
  goto "md_singleshot"
  :md_burst
  press "shoot_half"
  t=0
  do
  md_detect_motion a, b, i, x, d, c, 1, t, h, 1, 1, a, f, 0, g, e
  until t>0
  press "shoot_full"
  let X=get_tick_count
  :contloop
  let U=get_tick_count
  let V=(U-X)
  if V<j then goto "contloop"
  release "shoot_full"  
  goto "md_burst"