Spark_Library/Spark_MP.ubl
2025-07-03 10:35:24 +03:00

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
}