66 lines
2.2 KiB
Plaintext
66 lines
2.2 KiB
Plaintext
module Spark_MP 'cat;Variables'
|
|
author FABLAB
|
|
version 1 1
|
|
choices MP_pins '1' '9'
|
|
description ''
|
|
|
|
spec 'r' 'Ultrasonic Pin' 'Ultrasonic Pin _' 'menu.MP_pins' 1
|
|
spec 'r' '_Multipins' 'Multipins _' 'menu.MP_pins' '1'
|
|
space
|
|
spec ' ' 'RGBLED3' 'RGBLED Pin _ R _ G _ B _' 'menu.MP_pins num num num' 1 50 50 50
|
|
spec ' ' 'RGBLED3 Pin' 'RGBLED Pin _ R _ G _ B _' 'menu.MP_pins bool bool bool' 1 true true true
|
|
spec ' ' 'Traffic Light' 'Traffic Light Pin _ R _ Y _ G _' 'menu.MP_pins bool bool bool' 1 true true true
|
|
spec ' ' 'Traffic Light Pin' 'Traffic Light Pin _ R _ Y _ G _' 'menu.MP_pins num num num' 1 255 255 255
|
|
|
|
to Multipins Pin {
|
|
return (at Pin ('[data:makeList]' 12 0 0 0 0 0 0 0 17))
|
|
}
|
|
|
|
to RGBLED3 Pin Red Green Blue {
|
|
analogWriteOp (Multipins Pin) Red
|
|
analogWriteOp ((Multipins Pin) + 1) Green
|
|
analogWriteOp ((Multipins Pin) + 2) Blue
|
|
}
|
|
|
|
to 'RGBLED3 Pin' Pin Red Green Blue {
|
|
digitalWriteOp (Multipins Pin) Red
|
|
digitalWriteOp ((Multipins Pin) + 1) Green
|
|
digitalWriteOp ((Multipins Pin) + 2) Blue
|
|
}
|
|
|
|
to 'Traffic Light' Pin Red Yellow Green {
|
|
digitalWriteOp (Multipins Pin) Red
|
|
digitalWriteOp ((Multipins Pin) + 1) Yellow
|
|
digitalWriteOp ((Multipins Pin) + 2) Green
|
|
}
|
|
|
|
to 'Traffic Light Pin' Pin Red Yellow Green {
|
|
analogWriteOp (Multipins Pin) Red
|
|
analogWriteOp ((Multipins Pin) + 1) Yellow
|
|
analogWriteOp ((Multipins Pin) + 2) Green
|
|
}
|
|
|
|
to 'Ultrasonic Pin' Pin {
|
|
comment 'Contributed by Joan Guillén and Josep Ferràndiz'
|
|
digitalWriteOp ((Multipins Pin) + 1) false
|
|
waitMicros 2
|
|
digitalWriteOp ((Multipins Pin) + 1) true
|
|
waitMicros 50
|
|
digitalWriteOp ((Multipins Pin) + 1) false
|
|
local 'start' (microsOp)
|
|
waitUntil (or (not (digitalReadOp ((Multipins Pin) + 2))) (((microsOp) - start) > 23320))
|
|
waitUntil (or (digitalReadOp ((Multipins Pin) + 2)) (((microsOp) - start) > 23320))
|
|
if (((microsOp) - start) > 23320) {
|
|
comment 'Distance sensor not ready; return the last distance reading'
|
|
return _sr04_last
|
|
}
|
|
comment 'Pulse sent. Measure time until echo is detected.'
|
|
start = (microsOp)
|
|
waitUntil (or (not (digitalReadOp ((Multipins Pin) + 2))) (((microsOp) - start) > 23320))
|
|
_sr04_last = ((10 * ((microsOp) - start)) / 583)
|
|
comment 'Leave some time for reverberations to die away.'
|
|
waitMillis 10
|
|
return _sr04_last
|
|
}
|
|
|