Spark_Library/Downloads/Yellow_PWM.ubl
2025-08-02 11:34:14 +03:00

91 lines
2.7 KiB
Plaintext

module Spark_PWM 'cat;Control'
author 'FABLAB BH'
version 1 1
choices PWM_pins '1' '9'
choices PWM_pins2 '3' '4' '6' '7' '8'
choices direction clockwise 'counter-clockwise'
choices servo_pins '32' '33'
description ''
spec 'r' '_PWM Pin' '_PWM Pin _' 'menu.PWM_pins' 1
spec 'r' '_Direction' '_Direction _' 'menu.direction' 'clockwise'
spec ' ' 'Fan Motor3' 'Fan Motor Pin _ Speed _ (1-100)' 'menu.PWM_pins2 num' 3 50
spec ' ' 'Fan Motor4' 'Fan Motor Pin _ Speed _ (1-1023)' 'menu.PWM_pins2 num' 3 50
space
spec ' ' 'Fan Motor' 'Fan Motor Pin _ Direction _ Speed _ (1-100)' 'menu.PWM_pins menu.direction num' 1 'clockwise' 50
spec ' ' 'Fan Motor2' 'Fan Motor Pin _ Direction _ Speed _ (1-1023)' 'menu.PWM_pins menu.direction num' 1 'clockwise' 50
to Direction Direction {
if (Direction == ('[data:toString]' 'counter-clockwise')) {
return (booleanConstant false)
} else {
return (booleanConstant true)
}
}
to 'Fan Motor' Pin Direction Speed {
if (and (Speed > 0) (Speed <= 100)) {
local 'PWM' (absoluteValue (((Speed - 1) * ((1023 - 1) / 99)) + 1))
if ((Direction Direction) == (not true)) {
if (and (PWM > 0) (PWM < 1024)) {
digitalWriteOp ('PWM Pin' Pin) true
analogWriteOp (('PWM Pin' Pin) + 1) (1023 - PWM)
}
} else {
if (and (PWM > 0) (PWM < 1024)) {
digitalWriteOp ('PWM Pin' Pin) false
analogWriteOp (('PWM Pin' Pin) + 1) PWM
}
}
} (Speed == 0) {
digitalWriteOp ('PWM Pin' Pin) false
digitalWriteOp (('PWM Pin' Pin) + 1) false
} else {
sayIt 'The range is between 0 and 100'
}
}
to 'Fan Motor2' Pin Direction Speed {
if (and (Speed > 0) (Speed <= 1023)) {
if ((Direction Direction) == (not true)) {
digitalWriteOp ('PWM Pin' Pin) true
analogWriteOp (('PWM Pin' Pin) + 1) (1023 - Speed)
} else {
digitalWriteOp ('PWM Pin' Pin) false
analogWriteOp (('PWM Pin' Pin) + 1) Speed
}
} (Speed == 0) {
digitalWriteOp ('PWM Pin' Pin) false
digitalWriteOp (('PWM Pin' Pin) + 1) false
} else {
sayIt 'The range is between 0 and 1023'
}
}
to 'Fan Motor3' Pin Speed {
if (and (Speed > 0) (Speed <= 100)) {
local 'PWM' (absoluteValue (((Speed - 1) * ((1023 - 1) / 99)) + 1))
analogWriteOp ('PWM Pin' Pin) PWM
} (Speed == 0) {
digitalWriteOp ('PWM Pin' Pin) false
} else {
sayIt 'The range is between 0 and 100'
}
}
to 'Fan Motor4' Pin Speed {
if (and (Speed > 0) (Speed <= 1023)) {
analogWriteOp ('PWM Pin' Pin) Speed
} (Speed == 0) {
digitalWriteOp ('PWM Pin' Pin) false
} else {
sayIt 'The range is between 0 and 1023'
}
}
to 'PWM Pin' Pin {
return (at Pin ('[data:makeList]' 13 0 26 27 0 23 16 5 18))
}