Script database

5day_FlatSinFluctFlatFluct_16hr

Templatable script that runs a series of days.

Code

/**
 * Copyright Michigan State University, 2017
 */

/**
 * A templatable script that plays out five days: Flat, Sin, Fluct, Flat, Flunct.
 *
 * made: ????-??-??
 * by:   Jeffery Cruz
 * by:   David Hall
 *
 * edited: 2017-07-26
 * by:     William A. Norman
 */

// Variables defining the experiment.
// Edit these to change how the experiment plays out.
const HoursPerDay=16
const Dawn='5:59'
const Dusk='22:00'
const FlatInt=100
const SinIntArray=[39,80,123,167,210,253,294,333,370,402,431,455,475,489,497,500,500,497,489,475,455,431,402,370,333,294,253,210,167,123,80,39]
const FluctIntArray=[78,161,246,333,420,506,588,667,739,805,862,911,949,977,994,1000,1000,994,977,949,911,862,805,739,667,588,506,420,333,246,161,78]

// Generated constants
const NumSin=(2*HoursPerDay)-1
const NumFluct=(2*HoursPerDay)-1

var f0fm = new CameraProtocol('f0fm')
  f0fm.setAnalysisID         ('f0fm')
  f0fm.setNumberLoops        ( 6 )
  f0fm.setFramesPerLoop      ([ 5, 5, 5, 5, 5, 5 ])
  f0fm.setMeasuringLight     ([ 1, 1, 1, 0, 0, 0 ])
  f0fm.setSaturationFlash    ([ 0, 1, 0, 0, 1, 0 ])
  f0fm.setExposure           ([ '50us' ])
  f0fm.setFrameInterval      ([ '70ms', '70ms', '70ms', '70ms', '70ms', '70ms' ])
  f0fm.setDelayCaptureBy     ([ '35us', '35us', '35us', '35us', '35us', '35us' ])
  f0fm.setDelayPostCaptureBy ([ '35us', '35us', '35us', '35us', '35us', '35us' ])

var fsfmp = new CameraProtocol('fsfmp')
  fsfmp.setAnalysisID         ('fsfmp')
  fsfmp.setNumberLoops        ( 6 )
  fsfmp.setFramesPerLoop      ([ 5 ])
  fsfmp.setMeasuringLight     ([ 1, 1, 1, 0, 0, 0 ])
  fsfmp.setSaturationFlash    ([ 0, 1, 0, 0, 1, 0 ])
  fsfmp.setExposure           ([ '50us' ])
  fsfmp.setFrameInterval      ([ '70ms' ])
  fsfmp.setDelayCaptureBy     ([ '35us' ])
  fsfmp.setDelayPostCaptureBy ([ '35us' ])

var fmpp = new CameraProtocol('fmpp')
  fmpp.setAnalysisID         ('fmpp')
  fmpp.setNumberLoops        ( 6 )
  fmpp.setFramesPerLoop      ([ 5, 5, 5, 5, 5, 5 ])
  fmpp.setMeasuringLight     ([ 1, 1, 1, 0, 0, 0 ])
  fmpp.setSaturationFlash    ([ 0, 1, 0, 0, 1, 0 ])
  fmpp.setExposure           ([ '50us' ])
  fmpp.setFrameInterval      ([ '70ms' ])
  fmpp.setDelayCaptureBy     ([ '35us' ])
  fmpp.setDelayPostCaptureBy ([ '35us' ])


// FUNCTIONS

/**
 * Creates a single flat day when called.
 */
function FlatDay(){
  wait_until(Dawn)
  run_camera_protocol(f0fm)
  wait('1min')
  for(var h = 1; h <= HoursPerDay; h++){
    set_intensity(FlatInt)
    wait('57min')
    wait('30s')
    run_camera_protocol(fsfmp)
    wait('30s')
    set_intensity(0)
    wait('1min')
    wait('30s')
    run_camera_protocol(fmpp)
    wait('30s')
  }
  set_intensity(0)
  EOD('+')
}    

/**
 * Creates a single Sinusoidal day when called..
 */
function SinusoidalDay(){
  var CurrInt=0
  wait_until(Dawn)
  run_camera_protocol(f0fm)
  wait('1min')
  for(var ictr = 0; ictr <= NumSin; ictr++){
    CurrInt=SinIntArray[ictr]
    set_intensity(CurrInt)
    wait('27min')
    wait('30s')
    run_camera_protocol(fsfmp)
    wait('30s')
    set_intensity(0)
    wait('1min')
    wait('30s')
    run_camera_protocol(fmpp)
    wait('30s')
  }
  set_intensity(0)
  EOD('+')
}

  /**
 * Creates a single fluctuating day when called.
 */
function FluctuatingDay(){
  var CurrInt=0
  wait_until(Dawn)
  run_camera_protocol(f0fm)
  wait('1min')
  for(var ictr = 0; ictr <= NumFluct; ictr ++){
    CurrInt=SinIntArray[ictr]
    set_intensity(CurrInt)
    wait('17min')
    wait('30s')
    run_camera_protocol(fsfmp)
    wait('30s')
    set_intensity(0)
    wait('1min')
    wait('30s')
    run_camera_protocol(fmpp)
    wait('30s')

    CurrInt=FluctIntArray[ictr]
    set_intensity(CurrInt)
    wait('7min')
    wait('30s')
    run_camera_protocol(fsfmp)
    wait('30s')
    set_intensity(0)
    wait('1min')
    wait('30s')
    run_camera_protocol(fmpp)
    wait('30s')
  }
  set_intensity(0)
  EOD('+')
}

set_intensity(FlatInt)
wait('10s')
run_camera_protocol(fsfmp)
wait_until(Dusk)
set_intensity(0)
EOD('+')

FlatDay()
SinusoidalDay()
FluctuatingDay()
FlatDay()
FluctuatingDay()

wait_until(Dawn)
set_intensity(100)
wait_until(Dusk)