# Pulse throttle
Pulse throttle
I
O
# Eingänge
| ID | Kürzel | Name | Typ | Standard | Beschreibung |
|---|---|---|---|---|---|
input | I | input | BOOLEAN | false |
# Ausgänge
| ID | Kürzel | Name | Typ | Standard | Beschreibung |
|---|---|---|---|---|---|
output | O | output | BOOLEAN | false |
# Konfiguration
| ID | Name | Typ | Standard | Einheit | Beschreibung |
|---|---|---|---|---|---|
discard_period | discard_period | NUMBER | 0 | s | Details: ≥ 0 |
# Zustand
| ID | Name | Typ | Standard | Einheit | Beschreibung |
|---|---|---|---|---|---|
prev_input | prev_input | BOOLEAN | false | ||
discarding | discarding | BOOLEAN | false |
# Quellcode
Volang-Quellcode anzeigen
channel = input::channel()
value = input::value()
extern fn onCallback(v) {
state::set("discarding", false)
}
if (channel == "input") {
prev_input = state::get("prev_input")
if (value and !prev_input) {
discarding = state::get("discarding")
if (!discarding) {
output::set("output", true)
discard_ms = math::round(config::get("discard_period") * 1000)
if (discard_ms > 0) {
state::set("discarding", true)
callback::set(discard_ms, "onCallback", 0)
}
}
}
if (!value and prev_input) {
output::set("output", false)
}
state::set("prev_input", value)
}
