# Numeric latch

Przetwarzanie

Przechwytuje wartość numeryczną na impuls i przechowuje ją wewnętrznie.

Numeric latch
V
C
T
R
V

# Wejścia

IDSkrótNazwaTypDomyślnieOpis
valueVWartośćNUMBER0Wartość numeryczna dostępna do przechwycenia.
captureCPrzechwyćBOOLEANfalseWejście impulsowe. Zbocze narastające zatrzaskuje bieżącą wartość.
triggerTWyzwólBOOLEANfalseWejście impulsowe. Zbocze narastające wysyła przechwyconą wartość na wyjście.
resetRResetujBOOLEANfalseWejście impulsowe. Zbocze narastające resetuje wyjście do wartości domyślnej.

# Wyjścia

IDSkrótNazwaTypDomyślnieOpis
valueVWartośćNUMBER0Zatrzaśnięta wartość numeryczna.

# Konfiguracja

IDNazwaTypDomyślnieJednostkaOpis
default_valueWartość domyślnaNUMBER0Wartość przywracana przy resecie.
trigger_on_captureWyzwól przy przechwyceniuBOOLEANtrueGdy włączone, przechwycenie wartości natychmiast wysyła ją na wyjście.

# Stan

IDNazwaTypDomyślnieJednostkaOpis
captured_valuePrzechwycona wartośćNUMBER0Przechowuje wewnętrznie przechwyconą wartość.
prev_capturePoprzedni stan przechwyceniaBOOLEANfalsePrzechowuje poprzedni stan wejścia przechwycenia.
prev_triggerPoprzedni stan wyzwoleniaBOOLEANfalsePrzechowuje poprzedni stan wejścia wyzwolenia.
prev_resetPoprzedni stan resetuBOOLEANfalsePrzechowuje poprzedni stan wejścia resetu.

# Kod źródłowy

Pokaż kod Volang
channel = input::channel()
value = input::value()

// Handle "reset" input first (dominant input)
if (channel == "reset") {
    prev_reset = state::get("prev_reset")

    if (value and !prev_reset) {
        // Rising edge on reset - restore default value
        default_value = config::get("default_value")
        state::set("captured_value", default_value)
        output::set("value", default_value)
    }

    state::set("prev_reset", value)
    return
}

// Handle "trigger" input
if (channel == "trigger") {
    prev_trigger = state::get("prev_trigger")

    if (value and !prev_trigger) {
        // Rising edge on trigger - send captured value to output
        output::set("value", state::get("captured_value"))
    }

    state::set("prev_trigger", value)
    return
}

// Handle "capture" input
if (channel == "capture") {
    prev_capture = state::get("prev_capture")

    if (value and !prev_capture) {
        // Rising edge on capture - latch current input value internally
        captured = input::get("value")
        state::set("captured_value", captured)

        // Optionally send to output immediately
        if (config::get("trigger_on_capture")) {
            output::set("value", captured)
        }
    }

    state::set("prev_capture", value)
    return
}

// "value" input changes are ignored - output holds until next capture, trigger, or reset
Przechwytuje wartość numeryczną na impuls i przechowuje ją wewnętrznie.