Spark_Library/Spark_MDP/Spark_MDP.ubl
2025-06-03 14:02:19 +03:00

59 lines
1.8 KiB
Plaintext

module Spark_MDP 'cat;Variables'
author 'Fab Lab BH'
version 1 0
description ''
spec ' ' 'RGBLED3' 'RGBLED Pin _ R _ G _ B _' 'num num num auto' 17 50 50 50
spec ' ' 'RGBLED3 Pin' 'RGBLED Pin _ R _ G _ B _' 'auto bool bool bool' 17 true true true
spec ' ' 'Traffic Light' 'Traffic Light Pin _ R _ Y _ G _' 'auto bool bool bool' 17 true true true
spec ' ' 'Traffic Light Pin' 'Traffic Light Pin _ R _ Y _ G _' 'num num num num' 17 255 255 255
spec 'r' 'Ultrasonic Pin' 'Ultrasonic Pin _' 'num' 17
to RGBLED3 Pin Red Green Blue {
analogWriteOp Pin Red
analogWriteOp (Pin + 1) Green
analogWriteOp (Pin + 2) Blue
}
to 'RGBLED3 Pin' Pin Red Green Blue {
digitalWriteOp Pin Red
digitalWriteOp (Pin + 1) Green
digitalWriteOp (Pin + 2) Blue
}
to 'Traffic Light' Pin Red Yellow Green {
digitalWriteOp Pin Red
digitalWriteOp (Pin + 1) Yellow
digitalWriteOp (Pin + 2) Green
}
to 'Traffic Light Pin' Pin Red Yellow Green {
analogWriteOp Pin Red
analogWriteOp (Pin + 1) Yellow
analogWriteOp (Pin + 2) Green
}
to 'Ultrasonic Pin' Pin {
comment 'Contributed by Joan Guillén and Josep Ferràndiz'
digitalWriteOp (Pin + 1) false
waitMicros 2
digitalWriteOp (Pin + 1) true
waitMicros 50
digitalWriteOp (Pin + 1) false
local 'start' (microsOp)
waitUntil (or (not (digitalReadOp (Pin + 2))) (((microsOp) - start) > 23320))
waitUntil (or (digitalReadOp (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 (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
}