program eventTest {
  sensor s on 1
  s is switch as boolean
  event blip when s.pressed
  main {
    start beep
  }
  watcher beep monitor blip {sound 1}
}


program lightEventTest {
  sensor opto on 3
  opto is light as percent
  event black when opto.low
  main {
    start eye
  }
  watcher eye monitor black {sound 1}
}


program lightEventTest {
  sensor s on 3
  s is light as percent
  event blip when s.high
  main {
    start beep
  }
  watcher beep monitor blip {sound 1}
}


program eventTest {
  event blip when message
  main {
    clear message
    start beep
  }
  watcher beep monitor blip {clear message sound 1}
}


program eventTest {
  event blip when message > 5  //illegal for Scout
  main {
    clear message
    start beep
  }
  watcher beep monitor blip {clear message sound 1}
}


program eventTest {
  counter c
  event blip when c > 10
  main {
     clear c
     start beep
     forever {c += 1 wait 10}
  }
  watcher beep monitor blip {clear c sound 1}
}


program eventTest {
  counter c
  event blip when c = 0
  main {
     clear c
//     c += 10  //illegal for Scout
     repeat 10 {c += 1}
     start beep
     forever {c -= 1 wait 10}
  }
  watcher beep monitor blip {clear c repeat 10 {c += 1} sound 1}
}


program eventTest {
  counter c
  event blip when c = 1
  main {
     clear c
     repeat 10 {c += 1}
     start beep
     forever {c -= 1 wait 10}
  }
  watcher beep monitor blip {clear c repeat 10 {c += 1} sound 1}
}


program lightEventTest {
  var v
  sensor opto on 3
  opto is light as percent
  event black when opto > v  //illegal for Scout
  main {
    v = 60
    start eye
  }
  watcher eye monitor black {sound 1}
}


program eventTest {
  sensor s on 3
  s is light as percent
  event blip when s.high
  main {
    wait until blip
    while blip.state = 2 {wait 50 sound 1}
  }
}


program userCounterTest {
  var v1 = 4
  var v2 = 6
  sensor left on 1
  sensor right on 2
  left is switch as boolean
  right is switch as boolean
  counter c
  event up when left.pressed
  event down when right.pressed
  event blip when c is v1..v2  //illegal for Scout
  main {
    clear c
    display c
    start bumpers
    start beeper
  }
  watcher bumpers monitor up, down {
    sound 1
    if up {c += 1} else {c -= 1}
  }
  watcher beeper monitor blip {sound 2}
}


program userCounterTest {
  var v1 = 4
  var v2 = 6
  sensor left on 1
  sensor right on 2
  left is switch as boolean
  right is switch as boolean
  counter c
  event up when left.pressed
  event down when right.pressed
  event blip when c is not v1..v2  //illegal for Scout
  main {
    clear c
    display c
    start bumpers
    start beeper
  }
  watcher bumpers monitor up, down {
    sound 1
    if up {c += 1} else {c -= 1}
  }
  watcher beeper monitor blip {sound 2}
}


program userCounterTest {
  var v1 = 4
  var v2 = 6
  sensor left on 1
  sensor right on 2
  left is switch as boolean
  right is switch as boolean
  counter c
  event up when left.pressed
  event down when right.pressed
  event blip when c is v1..v2  //illegal for Scout
  main {
    clear c
    display c
    start bumpers
    wait until blip
    while c is v1..v2 {sound 1 wait 100}
    sound 3
  }
  watcher bumpers monitor up, down {
    sound 1
    if up {c += 1} else {c -= 1}
  }
}


program lightEventTest {
  sensor left on 1
  left is switch as boolean

  sensor opto on 3
  opto is light as percent

  event blip when left.click  //illegal for Scout
  event black when opto.low
  main {
    start eye
    start bumper
  }
  watcher eye monitor black {sound 1}
  watcher bumper monitor blip {sound 2 calibrate(opto)}
}


program userCounterTest {
  var v1 = 4
  var v2 = 6
  counter c
  main {
    clear c
    while c is not v1..v2 {sound 1 wait 100 c += 1}
  }
}


program rotationTest {
  sensor s1 on 3
  s1 is rotation as angle  //illegal for Scout
  event blip when s1 = 5
  main {
    start bumpers
  }
  watcher bumpers monitor blip {sound 1}
}


program messageTest {
  sensor s1 on 1
  sensor s2 on 2
  s1 is switch as boolean
  s2 is switch as boolean
  event step when s1.pressed
  event post when s2.pressed
  event msg when message
  var m = 4
  main {
    clear message
    start bumper
    start mailer
    start postbox
  }
  watcher bumper monitor step {
    sound 1
    if s2 is opened {m += 1} else {m -= 1}
  }
  watcher mailer monitor post {sound 1 send m}
  watcher postbox monitor msg {m = message clear message tone 50*m for 50}
}


program testMessage {
  event post when message < 5  //illegal for Scout
  main {
    clear message
    display post
    start postbox
  }
  watcher postbox monitor post {clear message sound 1}
}


program myvarEventTest {
  var v = 60*10
  sensor opto on 3
  opto is light as percent
  event blip when opto > v/10  //illegal for Scout
  main {
    start blipper
  }
  watcher blipper monitor blip {sound 1}
}


program myvarEventTest {
  var v = 60*10
  sensor left on 1
  sensor right on 2
  sensor opto on 3
  left is switch as boolean
  right is switch as boolean
  opto is light as percent

  event up when left.pressed
  event down when right.pressed
  event blip when opto > v/10  //illegal for Scout

  main {
    start bumpers
    start blipper
    display opto
  }

  watcher blipper monitor blip {sound 1}

  watcher bumpers monitor up, down {
    if up {v += 5*10} else {v -= 5*10}
  }
}


program myvarEventTest {
  var v = 15*10
  var w = 25*10
  sensor thermometer on 3
  thermometer is temperature as celsius  //illegal for Scout
  event blip when thermometer is v..w
  main {
    start blipper
  }

  watcher blipper monitor blip {sound 1}
}


program myvarEventTest {
  var v = 4
  var w = 6
  sensor shaft on 3
  shaft is rotation as angle  //illegal for Scout
  event blip when shaft > v
  main {
    start blipper
  }

  watcher blipper monitor blip {sound 1}
}


program myvarEventTest {
  counter c
  var v = 4*10
  var w = 6*10
  sensor left on 1
  sensor right on 2
  left is switch as boolean
  right is switch as boolean
  event up when left.pressed
  event down when right.pressed
  event blip when c is v..w  //illegal for Scout
  main {
    clear c
    start w1
    start w2
    start blipper
    display c:1
  }
  watcher blipper monitor blip {sound 1}
  watcher w1 monitor up {c += 1*10}
  watcher w2 monitor down {c -= 1*10}
}


program myvarEventTest {
  sensor opto on 3
  opto is light as percent
  event blip when opto.click
  main {
    blip.time = 15  //150mS
    start blipper
  }
  watcher blipper monitor blip {sound 1}
}


program flash {
  var v
  output B on 2
  sensor left on 1
  sensor right on 2
  left is switch as boolean
  right is switch as boolean
  event flash when left.pressed
  event up when right.pressed
  main {
    v = 1
    display v
    start flasher
    start upper
  }
  watcher flasher monitor flash {
    on B for v
  }
  watcher upper monitor up {
    v += 1
  }
}


program myvarEventTest {
  var msg = 0
  var v = 4*10
  event blip when message > v/10  //illegal for Scout
  main {
    display msg
    start blipper
  }
  watcher blipper monitor blip {msg = message clear message sound 1}
}


program timerEventTest {
  timer t
  event blip when t = 10
  main {
    clear t
    start blipper
  }
  watcher blipper monitor blip {clear t sound 1}
}


program timerEventTest {
  timer t1
  timer t2
  timer t3
  event blip1 when t1 = 10
  event blip2 when t2 = 11
  event blip3 when t3 = 13
  main {
    clear t1
    clear t2
    clear t3
    start blipper1
    start blipper2
    start blipper3
  }
  watcher blipper1 monitor blip1 {clear t1 tone 440 for 10}
  watcher blipper2 monitor blip2 {clear t2 tone 660 for 10}
  watcher blipper3 monitor blip3 {clear t3 tone 880 for 10}
}


program myvarEventTest {
  var v = 4*10
  timer t
  event blip when t = v/10  //illegal for Scout
  main {
    clear t
    start blipper
  }
  watcher blipper monitor blip {clear t sound 1}
}


program clickTest {
  sensor left on 1
  left is switch as boolean
  event e when left.click  //illegal for Scout
  main {
    display left.time
    start clicker
  }
  watcher clicker monitor e {sound 1}
}


program eventTest {
  output B on 2
  var r
  var v = 32766
  sensor axle on 1
  axle is rotation as angle  //illegal for Scout
  event beep when axle is 1..v

  main {
    display r
    start beeper
    on B
    while axle < 32600 { r = axle / 10 }
    off B
    forever { r = axle / 10 }
  }

  watcher beeper monitor beep { sound 1}
}


program testTemperatureEvent {
  var t
  sensor temp on 3
  temp is temperature as celsius  //illegal for Scout
  event warm when Temp is t
  main {
    t = 200
    start beeper
  }
  watcher beeper monitor warm {
   if warm { sound 1 }
  }
}


program testLightEvent {
  sensor opto on 3
  opto is light as percent
  event beep when opto.high
  main {
    beep.high = 50
    start beeper
  }
  watcher beeper monitor beep {sound 1}
}


program lightEvents {
  sensor s on 3
  s is light as percent
  event bright when s.high
  timer t
  event recalibrate when t = 10
  main {
    clear t
    start beeper
    start ticker
  }
  watcher beeper monitor bright {sound 3}
  watcher ticker monitor recalibrate {clear t sound 1 calibrate(bright)}
}
